首页 / PHP / exec php 执行不了怎么办
exec php 执行不了怎么办
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了exec php 执行不了怎么办,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2741字,纯文字阅读大概需要4分钟。
内容图文
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()
,显然是没有执行到业务代码(业务代码的第一行就有输出);
// 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视频教程》】
解决方案
- 方案一:修改 yii 文件首行,直接指明 php 解释器;
由#!/usr/bin/env php
修改为#!/usr/local/bin/php
,即直接指明 php 解释器所在位置(在代码发布时修改也可以); - 方案二:修改 exec 调用方法,直接指明 php 解释器
exec("/usr/local/bin/php /home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
- 注意:在实际执行中,exec 命令还有点问题,见下文 “504 错误”;
504 错误
- 当 exec 时间执行过长时(如超过 60 秒),页面上会出现 504 错误(Gateway Timeout);
- 需要将标准输出、标准错误重定向,然后就会在 后台进程执行命令,页面上会输出处理进程号;
$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);
关于 /usr/bin/env(可移植性高?)
- Why is it better to use “#!/usr/bin/env NAME” instead of “#!/path/to/NAME” as my shebang?
- How does /usr/bin/env know which program to use?
nginx 用户
为安全起见,通常设置 nginx 用户的 shell 为 /sbin/nologin
定时任务和 Web 操作的关系?
定时任务和 OSS 后台管理页面上的点击操作之间的关系处理的一直不太好;
- yii 框架 console 和 web 的两种处理方式;
如何提升 crontab 可测试性的问题;
如何改善 crontab 使用体验的问题;
如何合理复用 crontab 任务和 API(Controller/Action)代码的问题; - 前台和后台共享 Controller/Action 的方式;
或者说多项目之间方便共享代码库的问题;
启示
- php-fpm does not work exec, system, shell_exec, only CLI;
- PHP exec() does not run all commands;
以上就是exec php 执行不了怎么办的详细内容。
本文系统来源:https://www.php.cn/php-ask-471187.html内容总结
以上是互联网集市为您收集整理的exec php 执行不了怎么办全部内容,希望文章能够帮你解决exec php 执行不了怎么办所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。