微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php exec或shell_exec在脚本执行结束后不会终止它的进程

我正在尝试使用shell命令来检查PHP文件的语法错误,它在Windows(WAMP)中工作正常,但是在Linux上由shell命令exec / shell_exec / popen等创build的进程永远不会终止,从而导致apache挂起被我强行杀死。 杀死这个进程后也没有产生输出

我的testing脚本是

文件test.PHP是示例一行PHP文件,只testing其中包含

<?PHP $test['arr'] = 'bla'; ?>

和我试图检查语法错误代码是:

libdb4.6-dev与libdb4.7-dev

Linux使用boost asio拒绝套接字绑定的权限

如何在BusyBox上启用SSH而不重新编译BusyBox

使用linux perf工具来每秒钟报告计数器,如vmstat

套接获取IP地址,端口和连接typesfd

$slash = file_get_contents('test.PHP'); $tmpfname = tempnam("tmp","PHPFile"); file_put_contents($tmpfname,$slash); exec("PHP -l ".$tmpfname." 2>&1",$error); //also tried shell_exec but same behavIoUr $errtext = ''; foreach($error as $errline) $errtext.='<br>'.$errline; unlink($tmpfname); echo $errtext;

也试过使用函数popen

$slash = file_get_contents('test.PHP'); $tmpfname = tempnam("tmp",$slash); $handle = popen("PHP -l ".$tmpfname." 2>&1",'r'); $errtext = fread($handle,2096); pclose($handle); unlink($tmpfname); echo $errtext;

请有人指出我在哪里做错了,为什么由shell命令创build的过程永远不会在Linux本身结束,我试图寻找很多关于这个问题,但我没有得到任何结果。

在32位模式和64位操作系统的64位模式下编译ioctl函数有什么不同?

Linux从设备本身运行的脚本中卸载一个设备

为什么我不能在Ubuntu中使用wget获取这个页面

无限recursion别名`cd`

为500万次每日浏览量优化Nginx + PHP-FPM

我得到了阻塞问题的根本原因,这是在同一个用户的Linux服务器阻止所有其他请求的PHP会话(令人惊讶的是在Windows上工作良好)。

我用session_write_close(); 在运行exec和问题解决之前,但现在我有另外一个问题,这个脚本在Linux中,它被张贴在另一个问题PHP exec / shell_exec /系统/ popen / proc_open运行调用脚本本身无限次数在Linux上

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐