2013-06-06 5 views
0

Я получил новый ноутбук и установил новую версию XAMPP. Я перешел через систему, над которой я работаю, и она не работает должным образом на этом компьютере.Возможная проблема с PHP-конфигурацией?

Первая проблема, которую я признал, не включает файлы из местоположения относительно файла, который его включает. У меня есть файл config.php в каталоге includes/, а также файл include.php. В файле include.php я должен ввести require 'includes/config.php';, хотя config.php находится в той же папке, что и include.php. На моем другом компьютере мне просто нужно было сделать require 'config.php';.

Кроме того, поскольку включенные файлы не загружались с моим основным файлом, который я просматриваю, переменные и константы не определены, поэтому они, кажется, автоматически определяют их?

Notice: Use of undefined constant DB_HOST - assumed 'DB_HOST' in C:\xampp\htdocs\Xion\includes\include.php on line 6

Является ли это проблема с конфигурацией на более новую версию PHP?

ответ

1

Обычно PHP установки include_path ядро ​​содержит текущий путь, а также: она обозначается . (точкой), добавленного в список включенных трактов:

include_path=".;c:\php\includes" 

Цитирование the doc:

Использование a . в пути включения допускает относительное включение, поскольку это означает текущий каталог. Тем не менее, более эффективно явно использовать , включая './file', чем PHP, всегда проверяющий текущий каталог для каждого включения.

И да, любое barename (строка без кавычек) будет обрабатываться как постоянное имя PHP. Если эта константа не определена (например, в вашем случае), PHP преобразует ее в строку (выдавая уведомление, хотя).

0

Ошибка уведомления связана с тем, что вы получаете доступ к массиву типа $ someArray [DB_HOST]. Клавиши массива должны иметь кавычки вокруг них, как $ someArray ['DB_HOST']. Кавычки не являются константой, а ключи - строками, а не константами.

Входящий путь также довольно стандартный. Если у вас есть следующие файлы:

index.php 
includes/config.php 
includes/include.php 

При загрузке index.php и включить файл includes/include.php вы должны ввести полный путь includes/include.php. Если внутри include.php вы хотите включить includes/config.php. php рассматривает путь относительно исходного загружаемого скрипта, который был index.php. Подумайте об этом:

  • В скрипте вы загружаете и запускаете index.php.
  • В index.php вы указываете includes/include.php. Это не переводит вас на includes/include.php, а скорее получает includes/include.php и вводит код в index.php
  • Весь код от includes/include.php работает как с index.php.
  • Включите includes/config.php.Вы по-прежнему технически находились в index.php, поэтому вам нужно ссылаться на файл, как на звонки с index.php.

Чтобы исправить включать путь, вы можете использовать функцию set_include_path и добавить полный путь к каталогу включает в себя (или относительно включает в себя), а затем вы можете уронить includes/ с пути. PHP просто проверяет, находится ли файл в includes/, если он не может найти его нигде. Вы также можете просто изменить директиву include_path в файле php.ini или .htaccess.

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