【发布时间】:2023-09-08 12:03:01
【问题描述】:
不知道该怎么说……但是就这样吧。
我有一个想要在后台运行的 php 脚本,但我想从另一个 php 网页调用它。
这就是我试图称呼它的方式:
if (isset($_REQUEST['go']) && $_REQUEST['go'] =="monitor" ) {
echo "background script running";
$cmd = "php -n monitor.php";
shell_exec("$cmd > /dev/null 2>&1 &");
exit;
}
监视器很简单。它登录到数据库并检查特定值。 如果未找到该值,它会不断重复该过程,每 xx 秒检查一次以查看该值是否已设置。
如果找到它,它会更新日志并退出。
我遇到的问题是监视器在命令行中工作正常,但是当通过浏览器中的另一个页面调用时,我似乎无法让它运行。
有什么想法吗?
谢谢
更新
$cmd = "php -n monitor.php";
shell_exec($cmd);
这有效,但它使调用它的页面保持活动状态。一旦我尝试在后台运行它就会失败。
知道为什么吗?
【问题讨论】:
-
monitor.php 是否有其他用户的读取和执行权限?
-
您是否尝试过传递完整路径?
$cmd = "php -n /var/www/.../monitor.php" -
@KaranPunamiya 监视器与调用它的主页具有相同的权限。
-
@iswinky 使用完整路径不起作用:(
-
权限设置是什么?其他文件由您的用户调用。 monitor.php 文件由 www-data 调用。
标签: php shell command-line background