【问题标题】:Exec to launch php as background processExec 启动 php 作为后台进程
【发布时间】:2013-04-30 01:23:43
【问题描述】:

我正在努力使用 PHP 的 exec() 让 php 文件在后台运行。作为第一次测试,我尝试了:

exec("ls -l > logfile.txt 2> errfile.txt &");

效果很好。 logfile.txt 被一个目录列表填充。

根据 php 文档中的说明,由于 exec 启动了在后台运行的进程,标准输出(和标准错误)被重定向到文件。

现在,我试试

exec("/usr/bin/php -f /path/to/my.php > logfile.txt 2> errorfile.txt &");

似乎什么都没有发生。

这是我正在尝试的测试文件:

alpha.php

<?php 
    $version="a"; 
    // Go do something we do not need to wait for. 
    exec("/usr/bin/php -f /path/to/beta.php > logfile.txt 2> errorfile.txt &"); 
?>

<html> 
    <head><title>Test</title></head> 
    <body> 
    <p>This is Alpha version <?php echo $version; ?></p> 
    </body> 
</html>

beta.php

<?php 
    if (!($fp = fopen('/home/johnst12/public_html/workshops/admin/betadata.txt', 'w'))) { exit;} 
    fprintf($fp, "Proof that Beta executed."); 
    fclose($fp); 
?>

如果我直接运行 beta.php,它可以正常工作。 Betadata.txt 收到消息。

如果我运行 alpha.php 来启动 beta.php,则不会创建 betadata.txt。 logfile.txt 和 errorfile.txt 保持为空(预期)。

我确定 php 的路径和我的 php 文件的路径是正确的。

在谷歌上搜索澄清并没有结果。几个共同的主题似乎是 (a) 资源不足? (b) 对目标 php 文件没有权限?资源不足似乎不太可能。脚本的权限是全局读取 644 (rw-r--r--)。我尝试添加执行(755)以防万一。它没有任何区别。

PHP 版本 5.3.21 Linux/Apache 系统。 安全模式关闭

我错过了什么?谢谢。

【问题讨论】:

  • 该用户有权限写入该用户所在的文件夹。尝试运行 whoami 并在服务器中 su - "theuser" 并触摸文件

标签: php shell exec


【解决方案1】:

首先:您是否验证过 /usr/bin/php 是 PHP 的正确路径?

Php 不喜欢那样运行。与标准输入有关。试试 nohup:

exec("nohup /usr/bin/php -f /path/to/beta.php > logfile.txt 2> errorfile.txt &");  

使用 -f 任何其他看起来像标志的东西都会转到 PHP,所以如果你想将“-x”选项传递给你的脚本,那么你必须

/usr/bin/php -f /path/to/beta.php -- -x

如果没有,文件名之前的选项转到 PHP,之后转到脚本。

/usr/bin/php /path/to/beta.php -x

我假设您已经查看了这两个文件,以防它们有输出或错误?

需要检查的其他一些事项:

删除这两个文件。每次运行此代码时都会重新创建它们吗?

exec("nohup /usr/bin/php -v > logfile.txt &");  

应该将版本信息输出到该日志文件。

exec("/usr/bin/php -f /path/to/beta.php > logfile.txt 2> errorfile.txt");  

应该正确运行脚本(但不在后台)。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多