Попытка запустить программу в PHP и передать параметры командной строки, но параметры не попадают в программу - PullRequest
0 голосов
/ 13 января 2019

У меня есть этот фрагмент кода PHP:

function report ($data_to_send)
{
//$exec_string = 'nohup php ../serverside/error_writer.php ' . $data_to_send . ' >/dev/null 2>&1 &';
echo "Execution string: $exec_string </p>";
exec ("../serverside/error_writer.php $data_to_send > /dev/null 2>&1 &");
}

Когда вызывается эта функция, PHP-программа должна запустить error_writer.php и немедленно продолжить выполнение. Не следует останавливаться и ждать выхода.

Программа, параметры в $ exec_string никогда не попадают в error_writer.php.

Вот что я знаю:

  • $ exec_string и $ data_to_send не пустые
  • Выполнение error_writer.php из командной строки с некоторыми составленными параметрами ведет себя как задумано (параметры правильно проанализированы, и программа работает как задумано)
  • error_writer.php запускается, но с пустыми параметрами командной строки
  • Жесткое кодирование фиксированной строки (например, "Привет, мама!") В PHP НЕ работает
  • Поиск и поиск похожих проблем не дает явного указания на то, что я делаю иначе, чем кто-либо другой
  • Я также пробовал варианты закомментированной строки с похожими результатами. Удаление всего материала «беги в фоновом режиме и продолжай», похоже, не поможет.

У кого-нибудь есть понимание, почему параметры командной строки просто не отображаются в error_writer.php? Я надеюсь, что я написал достаточно ясно. Спасибо.

Редактировать 1/20: Так что это сработало для меня.

    $exec_string = 'php -d register_argc_argv=1 ../serverside/error_writer.php "' . $data_to_send . '" > /dev/null 2>&1 &';

-d переопределяет настройки php.ini, поэтому проблема должна быть в конфигурации, а не в самом коде.

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