Linux include не работает

PHP: Почему нормально не работает include?

Когда функциия вызывается в том же файле, где расположена- работает нормально. Но стоит только вынести её в отдельный файл, а потом включить этот файл с include, require и т.п., функция сразу перестаёт работать.

В чём может быть проблема? .

10 ответов

Глобальных переменных не использую.

Скрипт работает нормально, пока ему не приходится запускать вынесенную в другой файл функцию. Как только эта функция

запускается, броузер выводит чистый экран.

function fnc_update ( $table , $id , $fields , $values ) <
if ( count ( $fields ) == count ( $values ) ) <
$q = «UPDATE » . $table . » SET » . $fields [ 0 ] . «='» . $values [ 0 ] . «‘» ;
for ( $i = 1 ; $i count ( $fields ) ; $i ++ ) <
$q = $q . «, » . $fields [ $i ] . «='» . $values [ $i ] . «‘» ;
> //for
$q = $q . » WHERE > . $id . «‘» ;
$sql = mysql_query ( $q ) or die
( «

\» error \» >Error: » . mysql_error ( ) . » : » . $q . «

include ( «file1.php» ) ;
//include_once(«file1.php»);

if ( $condition ) <
fnc_update ( «teacher» , $_POST [ «teacher_id» ] , array ( «login» , «paswd» ) , array ( $_POST [ «login» ] , md5 ( $_POST [ «paswd» ] ) ) ) ;
>

Если функция определена в том же файле- всё работает.

Вставка return 0; не помогла.

то есть ты не понимаешь не работает инклюд или функция?
разрули постепенно
файл инклюдится, ато была бы ошибка
значин не пашет функция
напиши перед кодом функции просто

fnc_update($table, $id, $fields, $values) <
echo «OK»;exit;

и посмотри вызывается ли она вообще. Если вызывается смотри код если нет смотри вызов 🙂

fnc_update(1,2,3,4);
если опять ОК не выскочит вырубай комп, отдыхай, а потом со свежими силами ищи по новой)))

Все manual’ы по include давно прочитала. В файле нет синтаксических ошибок.

Пробовала закоментировать содержимое функции- всё равно, когда запускается функция, перестаёт работать весь скрипт.

мистика 🙂
попробуй развести массив и запрос
то есть не передвай array() прямо в вызове функции
а сначала создай $x = array() а потом уже fnc_update($x)
если понимаешь о чем я. думаю ошибка там(в вызове)
разделяй и влавствуй 🙂

всё верно, LD 100.
Вот такой код:

я столкнулся с проблемой. В логах сервера увидел вот это:

в браузере вывод ошибок выключен.

необходимо было сначала определить переменную, что бы вывести массив.
Проблем то ли в настройках php то ли в версии php

Источник

Урок 8. Подключение файла в PHP. Include и require

Основы

Одна из самых занимательных и полезных возможностей php — подключение другого файла. Например, на сайте есть верхнее меню, нижнее и между ними само содержание страницы. И, например, на 10 страницах сайта используется нижнее меню. В какой-то момент в него потребовалось внести изменения. В html Вы бы вручную в каждом отдельном файле вносили изменения, но php позволяет существенно упростить работу с сайтом! Код нижнего меню может содержаться в отдельном файле, а на каждой из 10-ти страниц можно просто подключать этот отдельный файл! То есть все изменения нужно теперь вносить только в файл с меню, а на 10-ти других оно будет отображаться уже с изменениями.

Читайте также:  Почему не работает mail ru сегодня 7 июня

Смысл подключения в php простым русским языком:

Файл 1.php
Верхнее меню

Файл 2.php
Нижнее меню

Файл example.php
Подкючаем Файл 1.php
Содержание страницы
Подкючаем Файл 2.php

В результате проработки файла example.php будет отображено
Верхнее меню
Содержание страницы
Нижнее меню
Соответственно, чтобы что-либо изменить в нижнем меню, нужно внести изменения только в файле 2.php

Путь к файлу

Подключение файла происходит согласно указанному к файлу пути. Есть два варианта пути: относительный и абсолютный. Относительный — это указание пути к подлючаемому файлу относительно файла с инструкцией подключения. Абсолютный — указание полного пути к подключаемому файла.

Код PHP

Если путь не указан, будет использоваться путь, который указан в директиве include_path (в конфигурационном файле php.ini). Если файл не найден по указанному пути в include_path, инструкция include попытается проверить текущую рабочую директорию, в которой находится скрипт подключающий файл, если конструкция include не сможет найти файл, будет выдано предупреждение (warning).

Если путь указан — не важно какой: абсолютный или относительный (относительно текущей директории, где расположен включающий сценарий) — директива include_path будет проигнорирована.

include и include_once

include() — конструкция, предназначенная для включения файлов в код сценария PHP во время исполнения сценария PHP. При обработке кода инструкция заменяется на содержимое присоединяемого файла. Предлагаю сразу рассмотреть пример.

Рассмотрим работу include на примере двух файлов: index.php и text.php. Для простоты работы допустим, что они лежат в одной директории.

Код PHP (файл index.php)

Код PHP (файл text.php)

В результате работы файла index.php отобразится:

Обычный текст, содержащийся в основном файле
Текст, содержащийся в подключаемом файле
Правда удобно? Теперь, поменяв содержимое в файле text.php будет совершенно другой результат работы index.php!

Теперь поговорим о другой конструкции — include_once. Она работает абсолютно также как и include, только создана позже и для тех случаев, когда нельзя повторно подключить файл. Например, Вы боитесь, что в результате ошибки можете подключить файл 2 и более раз, что скажется на некорректной работе страницы и получении соответствующего сообщения об ошибке.

Код PHP

require и require_once

Инструкции require и require_once работают идентично include и include_once за исключением лишь одной особенности — в случае того, если подключаемый файл не будет найден, выполнение скрипта будет остановлено (сценарий дальше не будет считываться), в то время как include и include_once просто выводят предупреждение и продолжают дальнейшее выполнение скрипта.

Постарайтесь в дальнейшем отказаться от использования include и require, применяйте их аналоги с суффиксом _once. В результате это упростит разбиение большой и сложной программы на относительно независимые модули.

Если не работает include или require

Чтобы понять причины того, почему не работает include, предлагаю проверить всё по шагам. Какими бы понятными и поверхностными не были указанные ниже пункты, проверьте всё с самого начала

1. Проверьте, работает ли Ваш сервер и php, работает ли вообще любой php код на сайте
2. Убедитесь, существует ли файл подключаемый файл
3. Проверьте, правильно ли введено название файла и расширение в подключении
4. Убедитесь, что подключаемый php-файл действительно находится по тому адресу, по которому указали
5. Попробуйте указать не относительный путь, а абсолютный (полный путь к файлу).

Пример Код PHP

6. Если у Вас не подключается файл и не отображается никакой ошибки, то в директории с файлом, который подключаете, создайте файл .htaccess со следующим содержимым

или в файле php, перед подключением, вставьте следующую строку

И та, и другая настройки будут принудительно отображать ошибки

Источник

linux include.

Вопрос. Почему у меня в каталоге /usr/include/linux, файлы от версии 2.6.27 и многих файлов нехватает(например моdules.h)? При том, что ядро версии 2.6.30 и в каталоге /usr/src/include лежат актуальные версии. Зачем такая неразбериха? Дистр Gentoo.

Ты ж сам дал ответ на свой вопрос:

Я ещё одного не понял, как у меня могли собраться сторонние модули из сорцов?

Есть такой пакет linux-headers, кажется называется. Он отличается от пакета ядра хотя бы тем, что его стабилизация отстает на пару версий. Посмотри через eix какая версия установлена.

>Посмотри через eix какая версия установлена.
Я уже писал, что 2.6.27.

Посмотрел как собирается дравер звуковухи.
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
А build в свою очередь это ссылка на /usr/src/linux/include
Ха, ха, ха. Вот это огород.

хочется актуальных хидеров — make headers_install в исходниках ядра

>хочется актуальных хидеров — make headers_install в исходниках ядра
Спасибо, а не чего что пакет linux-headers установлен?

Я ещё одного не понял, как у меня могли собраться сторонние модули из сорцов?

/usr/include/linux — это заголовочные файлы для программ из пространства пользователя. Для сборки модулей ядра эти файлы не нужны.

То, что версия linux-headers отстаёт по версиям от ядра — это нормально.

> Спасибо, а не чего что пакет linux-headers установлен?

в принципе, make headers-install ничего не меняет в системе. все заголовочные файлы, адаптированные для userspace, помещаются в /usr/src/linux/usr/include. потом копируй их на свой страх и риск, или создай пакет с актуальной версией

Ты лучше объясни зачем тебе нужны наисвежайшие заголовочные файлы. Ты пишешь какую-то софтину, которая должна использовать интерфейсы ядра, которые в стабильной версии linux-headers ещё не описаны, но в стабильной версии ядра уже есть?

>Ты пишешь какую-то софтину, которая должна использовать интерфейсы ядра, которые в стабильной версии linux-headers ещё не описаны, но в стабильной версии ядра уже есть?
Нет, просто пытался собрать модуль, а он не собирался по причине отсутсвия , вот и удивился для чего столько путей к заголовочным файлам.

Нет, просто пытался собрать модуль, а он не собирался по причине отсутсвия , вот и удивился для чего столько путей к заголовочным файлам.

Источник

Не работает #include virtual в php

В браузере при загрузке страницы строки вида

и др. отображаются в браузере комментариями, вместо них должна появляться разметка, находящаяся в других файлах

В проекте написан класс (DefaultRoute), который по запросу находит необходимый класс GET.php, если ввели localhost/users — то найдёт файл users/GET.php, который в свою очередь формирует параметры для файла разметки — users/users.html.php

Итого: есть DefaultRoute, который по запросу определяет необходимый контроллер GET.php, контроллер в свою очередь формирует необходимые параметры для разметки users.html.php Вероятно, что и путь до папки «/index/ssi/news» связаны с вышеуказанной схемой работы приложения, но вот нигде нет и упоминания #include virtual, где бы в ручную всё обрабатывалось.

Конфигурация — apache2, debian, php7

В чем может быть проблема и как её исправить?

PS — всё таки похоже дело в ssi, но я никак не могу его настроить.

PS_PS: включил ssi — теперь apache2 что-то пытается сделать со строками вида , но безуспешно и выдаёт ошибки :

1)Fatal error: Cannot declare class Имя_Класса, because the name is already in use in . 2)Notice: Constant Имя_Константы already defined in . Притом все константы определены в config.php (define(‘LC_LANGUAGE_LIST’, []);), который используется только при запуске приложения в app.php:

Чего-то не хватает в настройках ssi

PS_PS_PS: Исправил fatal ошибки — теперь ssi как будто бы зацикливается и в итоге ошибка:

Источник

Язык C, C++: как подключать (#include) заголовки относительно корня проекта в GCC, кроссплатформенно?

Никак не могу понять простую вещь.

Мне необходимо подключать заголовочные файлы относительно корня проекта. Надоело указывать относительные пути, потому что из разных каталогов проекта путь до одно и того же заголовка будет разный. Да и вообще относительные пути — это неправильно.

Насколько я выяснил, в Linux можно добавлять в переменную окружения INCLUDE_PATH путь к каталогу проекта. После чего будут работать директивы #include с файлами относительно корня проекта:

. препроцессор последовательно перебирает пути в INCLUDE_PATH начиная с первого. Относительный путь из директивы include разрешается относительно (sic) папки из INCLUDE_PATH. Если файл не найден, переходим к следующему элементу INCLUDE_PATH. Если INCLUDE_PATH исчерпан, компилятор сообщает об ошибке.

Однако возникают вопросы.

1. Какой путь добавлять к INCLUDE_PATH? Относительно корня файловой системы? Но тогда проект не будет собираться в другом каталоге, например, когда пользователь захочет самостоятельно скомпилировать проект, ведь у него не будет установлен нужный каталог в INCLUDE_PATH.

2. Где и как прописывать INCLUDE_PATH? Я поковырял исходники (Makefile) нескольких C/C++ опенсорчных проектов и не нашел никакой работы с INCLUDE_PATH. Значит, делают как-то по-другому, но как?

3. Проект кроссплатформенный. Необходимо понять, как и где настраивать INCLUDE_PATH (предположим, что используется система сборки make), чтобы компиляция шла и в Linux и в Windows под GCC.

4. Проект кроссплатформенный на Qt4. Необходимо понять, как и где настраивать INCLUDE_PATH, чтобы компиляция шла и в Linux и в Windows под GCC.

Источник

Оцените статью