exec php执行不了的解决办法:1、修改yii文件首行,直接指明php解释器;2、修改exec调用方法,直接指明php解释器。
本文操作环境:Windows7系统、PHP7.1版、Dell G3电脑。
php exec 为何执行不了?
有一个定时任务,想在 OSS 后台管理页面可以点击启动,可是试了几种方法都不行;无论 system 还是 exec(手工在 shell command line 执行没问题);最初怀疑 Web Server nginx 用户的权限问题,后来发现是环境变量找不到 php 可执行文件(因为 nginx 用户是受限用户);
exec("/home/app/example/api/app/yii demand/virtual {$id}", $output); print_r($output);
以上脚本执行后仅输出 Array(),显然是没有执行到业务代码(业务代码的第一行就有输出);
立即学习“PHP免费学习笔记(深入)”;
// http://oss.example.com/index.php?r=demand/demand-ip/msg&id=1929 点击后执行 exec("/home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
以上脚本执行后有错误输出:Array ( [0] => /usr/bin/env: php: No such file or directory );
/usr/bin/env: php 这句话出自 yii 文件的首行 #!/usr/bin/env php,本意是用于指明执行 yii 文件的 php 脚本解释器在哪里;可是错误输出/usr/bin/env: php: No such file or directory 说明找不到 php 在哪里;
【推荐学习:《PHP视频教程》】
exec("/usr/local/bin/php /home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
$cmd = '/usr/local/bin/php /home/app/example/yapp/yii demand/finish 2057'; $pid_file = 'msgrepeat.pid'; $exec_cmd = sprintf("%s > /dev/null 2>&1 & echo $! > %s & cat %s", $cmd, $pid_file, $pid_file); exec($exec_cmd);
为安全起见,通常设置 nginx 用户的 shell 为 /sbin/nologin
定时任务和 OSS 后台管理页面上的点击操作之间的关系处理的一直不太好;
以上就是exec php 执行不了怎么办的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号