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.

В чем причина?

Solutions Collecting From Web of "PHP CLI include () не находит файл"

Это потому, что ваш текущий рабочий каталог – тот, на который вы вызываете свою команду, а не тот, в котором находится ваш скрипт.

использование

 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__));