Как отлаживать popen () не работает?

На моем сервере Linux я использую shell_exec() запускать скрипты асинхронно. Эта функция недоступна в Windows, которую я использую для разработки, и поэтому я пытаюсь использовать popen() вместо.

Я использую Windows 10 x64, WampServer 2.5 x32 (PHP 5.5.12).

У меня есть следующий код в файле PHP:

$cmd = '"C:\wamp\bin\php\php5.5.12\php.exe" "C:\wamp\www\path\to\file.php" "arg1" "arg2"';

echo 'Running on DEV MACHINE: ' . $cmd . PHP_EOL;
$handle = popen("start /B " . $cmd, "r");
if ($handle === FALSE) {
die("Unable to execute $cmd");
}
pclose($handle);

Сценарий выполняется без ошибок, но файлы PHP никогда не запускаются. Я знаю, что они не запускаются, потому что я поместил SQL-запрос в самый верх, чтобы обновить поле в базе данных, чтобы указать, что они были запущены.

Как вы можете видеть в приведенном выше коде, я распечатываю команду, передаваемую popen(), Если я вставлю эту команду в командную строку и выполню ее, сценарии будут работать нормально. Это доказывает, что проблема заключается в popen(),

Я использую popen() как-то неправильно? Как я могу отладить, в чем проблема? Обычно я отлаживаю с помощью XDebug, но в этой ситуации нет возможности использовать это.

0

Решение

Мне никогда не удавалось заставить мой код работать, но я нашел альтернативный метод из другого ответа здесь, и на его основе изменился мой код для использования следующего, и он работает:

$WshShell = new \COM("WScript.Shell");
$oExec = $WshShell->Run($cmd, 0, false);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]