PHP CLI include() не находит файл
Структура моих файлов выглядит так:
config.php
script
|--myscript.php
myscript.php
<?php
require '../config.php';
?>
При выполнении php /path/to/myscript.php
я получаю Warning: require(../config.php): failed to open stream: No such file or directory.
В чем причина?
Ответы
Ответ 1
Это потому, что ваш текущий рабочий каталог тот, который вы вызываете, а не тот, на котором находится ваш script.
Использование
require __DIR__ . '/../config.php';
вместо этого. __DIR__
- это константа, указывающая на текущий файл каталога.
Ответ 2
Один из способов сделать это:
php -d include_path=/path/to/config.PHP скрипт.php
-d используется для установки директив INI во время выполнения, поэтому у вас нет изменений кода/конфигов/каталогов.
Ответ 3
Скорее всего, у вас неправильный рабочий каталог, поэтому ваши относительные пути не указывают, где вы его ожидаете. Чтобы увидеть, как PHP добавляет:
echo getcwd();
в качестве первой строки вашего script.
Ответ 4
Если вы не хотите (или не можете) изменить строку require
в своем коде, просто cd
в каталог, который ожидает ваш script, прежде чем запускать script:
cd /path/to
php /path/to/myscript.php
Ответ 5
Вам нужно использовать полный путь или изменить рабочий каталог:
chdir(dirname(__FILE__));