Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php cake命令出现错误127_Php_Shell_Cakephp_Server_Sysadmin - Fatal编程技术网

Php cake命令出现错误127

Php cake命令出现错误127,php,shell,cakephp,server,sysadmin,Php,Shell,Cakephp,Server,Sysadmin,我使用CakePHP 2.x创建了一个Shell任务,并希望通过控制器执行它。因此,我创建了一个函数,在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);

我使用CakePHP 2.x创建了一个Shell任务,并希望通过控制器执行它。因此,我创建了一个函数,在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是您所理解的真正含义,请参见

但这很奇怪,因为这是一条正确的道路

老实说,我怀疑这个系统在撒谎。因此,检查目标机器上的路径,而不仅仅是在开发环境中


还要检查执行脚本的用户是否被允许这样做。Linux权限可能很有趣。您可以尝试为cake文件设置777,并确保它也是可执行的。

为什么要从控制器调用cake shell任务?这听起来完全错误。如果浏览器和命令行都使用了共享代码,则此功能最好放在可由任务和控制器调用的模型中。因为我们希望从浏览器中的URL启动此shell脚本。这是一个长期运行的后台任务,我们不想在此过程中阻止用户。这不能通过cronjob自动完成吗?确实应该避免使用exec。如果你需要能够从浏览器中触发它,也许你应该考虑使用类似于队列插件之类的东西来触发任务。谢谢你的回复。这似乎是个好主意。我将研究这个插件。对不起,我的回答有点晚,但我正在测试你的建议。最后,我不使用控制器执行任务,而是在服务器上设置cron作业。我使用CakePHP队列插件从控制器添加新任务。但是,对于错误127,我通过用proc_open替换exec发现了执行错误。文件控制台/cake执行dirname、basename等命令,。。。但不是完整路径,例如:/usr/bin/dirname,我认为这是问题所在。