在Linux中脚本执行结束后,php exec或shell_exec不会终止其进程

DS博士

我正在尝试使用shell命令检查php文件的语法错误,它在Windows(WAMP)中工作正常,但是在Linux上,shell命令exec / shell_exec / popen等创建的进程从未终止,因此导致apache挂起,而该进程被我强行杀死。终止进程后也不会生成任何输出。

我的测试脚本是

文件test.php是仅用于测试的示例一行php文件,其中包含

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

我尝试检查语法错误的代码是:

$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", "PHPFile");
file_put_contents($tmpfname, $slash);
$handle = popen("php -l ".$tmpfname." 2>&1", 'r');
$errtext = fread($handle, 2096);
pclose($handle);
unlink($tmpfname);
echo $errtext;

请有人指出我在哪里做错了,为什么shell命令创建的进程永远不会在linux中结束,所以我尝试搜索很多有关此问题的信息,但没有结果。

DS博士

我得到了阻止问题的根本原因,它是php会话,它阻止了来自同一用户的linux服务器中的所有其他请求(令人惊讶的是,在Windows上它运行良好)。

我用了session_write_close(); 在运行exec并解决问题之前,但是现在我在linux中有这个脚本的另一个问题,它发布在另一个问题中php exec / shell_exec / system / popen / proc_open在Linux上运行调用脚本本身的次数无数次

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

php shell_exec()命令不起作用

来自分类Dev

通过shell_exec设置Java代码执行的时间限制

来自分类Dev

PHP从shell_exec删除隐藏的字符

来自分类Dev

几秒钟后终止shell_exec()

来自分类Dev

如何隐藏从shell_exec()启动的Linux命令的输出

来自分类Dev

Nginx中的PHP shell_exec权限

来自分类Dev

从PHP内置的Web服务器使用shell_exec运行后台进程

来自分类Dev

PHP shell_exec()未执行-没有错误

来自分类Dev

无法使用PHP shell_exec()执行telnet命令

来自分类Dev

php shell_exec返回null

来自分类Dev

shell_exec()不会在Linux中更改qdisc

来自分类Dev

PHP shell_exec System.OutOfMemoryException

来自分类Dev

php-使用shell_exec运行shell命令

来自分类Dev

在PHP中从shell_exec运行sed命令

来自分类Dev

shell_exec不为inkscape命令执行sh文件

来自分类Dev

PHP,而shell_exec Kill -9

来自分类Dev

PHP shell_exec()-详细输出?

来自分类Dev

Nginx中的PHP shell_exec权限

来自分类Dev

将GET变量传递给PHP中的shell_exec

来自分类Dev

通过php shell_exec的Docker命令

来自分类Dev

从php shell_exec()运行node js

来自分类Dev

动态创建脚本的Shell_exec与else

来自分类Dev

PHP在运行后台进程的bash脚本上调用shell_exec超时

来自分类Dev

PHP shell_exec()SASS-更新

来自分类Dev

使用PHP shell_exec()执行BASH脚本,无法写入文件

来自分类Dev

当 PHP 中的 shell_exec() 执行脚本时,Python open() 函数不起作用

来自分类Dev

php表单将值传递给php shell_exec

来自分类Dev

结束 shell_exec 进程 PHP

来自分类Dev

php shell_exec 命令不会在 ubuntu 中给出 python 脚本的输出