PHP константа не определена при использовании cli, но работает через apache - PullRequest
0 голосов
/ 29 мая 2020

У меня есть сценарий, в котором функция stati c во включенном файле будет видеть мои defined значения, если я активирую этот код через веб-запрос, но когда точно такой же код запускается через расписание запуска cron, defined значения не рассматриваются как определенные. Я сократил свой сценарий кода до простейшей возможной формы следующим образом:

Обновление Я поместил error_log(print_r(get_defined_constants(true),true)); в файл и сравнил результаты между веб-выполнением и выполнением cron и Единственное отличие - это моя отсутствующая константа на стороне cron и константы расширения pcntl на веб-стороне cron

примечание : все веб-запросы требуют этого файла настроек и не имеют проблем
примечание : у меня есть другие запланированные файлы, которые видят определенные значения
примечание : у меня есть другие веб-файлы, которые используют этот класс и его функции без проблем.

подтверждено : файл настроек включен
подтвержден : функция вызывается

Мне кажется, что я Мне не хватает чего-то совершенно очевидного или очень эзотерического c.

//-- settings file
...
define("NEED_THIS_CONST","DOODLYDOO");
...
//-- class file
class vendor {
  public static function dothis() {
    error_log("reached the file");
    if(!defined("NEED_THIS_CONST")) {
      error_log("not defined");
    else
      error_log("defined");
    }
  }
}
//-- requested file
...
require_once("settings.php");
include_once("vendor.php");
vendor::dothis();

1 Ответ

0 голосов
/ 29 мая 2020

Проблема решена. В какой-то момент я скопировал файл настроек (скрытый файл) в свой домашний каталог, чтобы scp его, и по какой-то причине этот скрипт (не по тому же пути) использовал этот файл настроек при запуске из cron, когда я удалил эту копию (не ссылка) cron мгновенно начал использовать живой файл. Я до сих пор не знаю, почему эта копия использовалась, поскольку фактический путь включения - это относительный путь к абсолютной кодовой базе root, которая все равно не найдет этот файл. Я потерялся относительно того, как, дескриптор теневого файла? На Linux? Никогда об этом не слышал. Но теперь он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...