【问题标题】:php exec() Linux server strange outputphp exec() Linux 服务器奇怪的输出
【发布时间】:2016-08-04 21:35:24
【问题描述】:

我正在尝试回退一个 php 脚本,因为它需要一分钟多的时间才能完成,而且我不希望用户等待。

我的执行命令如下:

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 文档,其中包含指向我的网站的不同链接等。

谁能告诉我为什么会发生这种情况,而不是简单地运行脚本?

顺便说一句

我使用了不同的命令,例如 /usr/bin/php 具有相同的效果

更新

我注意到在将第一个 path/to/file.php 参数更改为乱码后,即

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

输出保持不变,不知道这意味着什么,但我认为这是值得注意的

【问题讨论】:

  • 一旦你在后台运行该 shell 脚本,shell() 返回并且你的父脚本继续执行。这意味着父脚本可以在后台作业继续运行时完全独立地退出/退出/无论如何。
  • 哎呀,我的问题犯了一个错误,我的意思是输入 exec 而不是 shell,想到了 shell_exec 并让自己感到困惑
  • 脚本有shebang吗?作为一般准则,通常最好包含一个 chmod 到可执行文件,并让 /bin/sh 调用它...
  • 没关系。它们基本上是一样的, exec() 只是为您提供了捕获退出值的选项,而不仅仅是输出。

标签: php linux exec


【解决方案1】:

经过反复试验,我发现

usr/bin/php 

指向一个php命令,它只在我当前的服务器上输出文档,当我把它改成

usr/bin/php5 

成功了。 linux php命令的文档很难找到,我还没有找到其他人有同样的问题,但它已经解决了。

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 2023-03-10
    • 2020-06-03
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多