2016-12-24 6 views
0

У меня есть файл file_to_include.php, который содержит определения переменных,PHP: Не удается получить доступ к определению из включенного файла?

define("NAME", "John Doe"); 

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

include_once 'file_to_include.php'; 

, а затем повторить мое определение в index.php с

echo NAME; 

Все, что я вижу на странице NAME, а не John Doe.

Я думаю, что определения являются глобальными, что я делаю неправильно?

+0

Попробуйте определить его как .. public const $ NAME = "John Doe" и проверить, работает ли он – Nevermore

+0

Не имеет смысла, он должен работать. У обоих файлов есть ' CodeGodie

+0

Оба файла имеют CryptoCat

ответ

-1

Оказывается, это была довольно простая проблема. Я предоставлял пути к файлам, как если бы я был уже в моем корневом каталоге PHP, /var/www/html. Поэтому я просто назначал пути к файлам, начиная с подкаталогов в этом корневом каталоге PHP. Ex. говоря include '/subdir/myfile.php'; вместо include '/var/www/html/subdir/myfile.php';

В будущем, вероятно, лучше хранить в корневой каталог в качестве глобальной константы где-нибудь, а потом просто сказать include '$__ROOT__/subdir/myfile.php';

+0

почему downvote? по крайней мере, оставить конструктивный комментарий. – CryptoCat

0

Может быть неправильный путь, посмотрим, что РНР inlcude_path это выглядеть. PHP include и include_once будут продолжены, даже если найденный файл найден или нет.

Вы должны иметь в виду, что require и require_once будет прерывать выполнение, если файл не найден, в отличие от include и include_one не будет.

The PHP documentation говорит:

требует идентично включать за исключением случаев отказа он также будет производить фатальную ошибку уровня E_COMPILE_ERROR. Другими словами, он остановит скрипт, тогда как включает только предупреждение (E_WARNING), которое позволяет сценарию продолжить.

 Смежные вопросы

  • Нет связанных вопросов^_^