Я создаю задачу Shell с CakePHP 2.x, и я хочу выполнить ее через контроллер. Итак, я создаю функцию, которая выполняет команду cli для запуска задачи Shell. Вот мои файлы:
// I want to launch it in background task
$pid = exec(APP . 'Console/cake {myCommand} {myTask} {argument} >/dev/null 2>&1 & echo $!', $output, $return_var);
debug($pid);
debug($output);
debug($return_var);
Это оказывает:
// line xx
''
// line xx
array()
// line xx
(int) 127
Я пытался запустить только cake
команда как это:
$pid = exec(APP . 'Console/cake', $output, $return_var);
И я получаю тот же результат. Кажется, что оболочка не находит полный путь, но это странно, потому что это правильный путь. Я тестировал его на своей машине в разработке, он работает отлично.
У вас есть идея, откуда это может прийти?
Спасибо
172 на самом деле смысл того, что вы выяснили, видите http://tldp.org/LDP/abs/html/exitcodes.html
но это странно, потому что это правильный путь
Честно говоря, я сомневаюсь, что система лжет. Так что проверяйте путь на вашей целевой машине, а не только в вашей среде разработки.
Также проверьте, разрешено ли пользователю, выполняющему скрипт. Разрешения Linux могут быть веселыми. Вы можете попробовать установить 777 для cake
файл, и убедитесь, что он исполняемый.
Других решений пока нет …