popen执行php脚本失败,php exec / shell_exec / system / popen / proc_open在linux上运行调用脚本本身无数次...

我有一个脚本,使用php -l检查php文件中的语法错误.它在

Windows中工作正常但在

Linux中输出不正确:

正在检查语法错误的文件exec_ip.php的内容是(它有要检查的语法错误):

$arr['12] = 'asd';

?>

并且脚本是:

$slash = file_get_contents('exec_ip.php');

//echo $slash;

$tmpfname = tempnam("tmp", "PHPFile");

file_put_contents($tmpfname, $slash);

exec("php -l ".$tmpfname,$error);

$errtext = '';

foreach($error as $errline) $errtext.='
'.$errline;

unlink($tmpfname);

echo 'ERR:'.$errtext;

结果在WINDOWS(WAMP){CORRRECT}:

ERR:

Parse error: syntax error, unexpected T_STRING, expecting ']' in C:\WINDOWS\Temp\PHP1F1.tmp on line 2

Errors parsing C:\WINDOWS\Temp\PHP1F1.tmp

LINUX中的结果(Centos / cPanel){UNKNOWN OUTPUT}:

ERR:

Content-type: text/html

ERR:

Content-type: text/html

ERR:

Content-type: text/html

ERR:

Content-type: text/html

ERR:

Content-type: text/html

ERR:

Content-type: text/html

ERR:

Content-type: text/html

ERR:

Content-type: text/html

ERR:

... too many same above lines

请有人帮助我,并指出为什么它在linux生产服务器中提供不正确的输出.我也尝试使用shell_exec,popen,proc_open,system代替exec,但都有相同的行为.我试图追查过去2天的根本原因……请帮忙

编辑:有时我看到以下错误日志“PHP警告:exec():无法在第5行的/home/user/public_html/exect.php中分叉[php -l / tmp / PHPFileI4T43l]”.

我认为它是递归exec命令本身在每次递归时创建一个新进程,但无法得到它的原因.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值