2016-08-04 100 views
1

我试图背景PHP脚本,因为它将需要超过一分钟才能完成,我不希望用户等待。php exec()Linux服务器奇怪的输出

我exec命令如下:

exec ('php -f path/to/file.php > path/to/output.log 2>&1 &'); 

第一个文件没有做什么,我编程,但是它做在所有的脚本,输出文件仍然临危输出:

X-Powered-By: PHP/5.6.24 
Expires: Wed, 11 Jan 1984 05:00:00 GMT 
Cache-Control: no-cache, must-revalidate, max-age=0 
Pragma: no-cache 
Content-Type: text/html; charset=UTF-8 
Link: <https://example.com/wp-json/>; 
rel="https://api.w.org/" 
Link: <https://example.com/?p=687>; rel=shortlink 
.... 

这个输出完全不是我的脚本应该做的,它对我来说没有任何意义。

其余的输出是一个html文档,它与我的网站有不同的链接等。

任何人都可以告诉我为什么会发生这种情况,而不是简单地运行脚本?

BTW

我使用了不同的命令如/ usr /斌/ PHP用相同的影响

UPDATE

我注意到,改变第一路径后/到/ file.php paremeter to gibberish即

exec ('php -f asdfjaskldfj > path/to/output.log 2>&1 &'); 

输出保持不变,不知道这是什么意思,但我相信我吨至是值得注意的

+0

一旦你背景shell脚本,shell()'返回并且你的父脚本继续执行。这意味着父代脚本可以退出/退出/当该后台作业继续运行时完全独立。 –

+0

oops我在我的问题中犯了一个错误,我的意思是输入exec不是shell,想到了shell_exec并且自我困惑 – electricjelly

+0

脚本是否有shebang?作为一般指导原则,通常最好包含一个,将chmod包含到可执行文件中,然后让/ bin/sh调用它... –

回答

0

必须的试验和错误之后,我发现,

usr/bin/php 

指着一个PHP命令,只有我目前的服务器上输出的文件,当我把它改成

usr/bin/php5 

有效。很难找到关于linux php命令的文档,我仍然没有找到其他人有同样的问题,但它已经解决了。