Структура моих файлов выглядит так:
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.
В чем причина?
Это потому, что ваш текущий рабочий каталог – тот, на который вы вызываете свою команду, а не тот, в котором находится ваш скрипт.
использование
require __DIR__ . '/../config.php';
вместо. __DIR__
– это константа, указывающая на текущий файл каталога.
Один из способов сделать это:
php -d include_path=/path/to/config.php script.php
-d используется для установки директив INI во время выполнения, поэтому у вас нет изменений кода / конфигов / каталогов.
Скорее всего, у вас неправильный рабочий каталог, поэтому ваши относительные пути не указывают, где вы его ожидаете. Чтобы увидеть, как PHP добавляет:
echo getcwd();
как первая строка вашего скрипта.
Если вы не хотите (или не можете) изменить строку require
в своем коде, просто cd
в каталог, который ваш сценарий ожидает выполнить перед запуском вашего скрипта:
cd /path/to php /path/to/myscript.php
Вам нужно использовать полный путь или изменить рабочий каталог:
chdir(dirname(__FILE__));