0

我需要从浏览器执行 AT 命令。我的 /etc/at.deny 是空的并且 /etc/at.allow 不存在。我可以在任何用户的命令行上执行“php page.php”并且工作正常。

这是我的页面(page.php):

<?php
exec('at -f job.txt now + 1 minutes'); 
?>

我的工作.txt:

/bin/php /var/www/html/my_job.php 

所以现在我不想在有人从浏览器访问我的 page.php 时执行 page.php:

https://mywebpage.com/page.php

当有人访问我的页面时,我从 /var/log/httpd/error_log 收到此错误“PAM 故障:系统错误”。我猜这个错误是由权限问题引起的,有人可以告诉我如何修复它或给我一些建议。我在网上找不到任何答案或示例。

更新

感谢 Barmar 提醒我应该使用完整路径。现在这是我的新 page.php,但我仍然收到相同的错误“PAM 失败”。请问有什么建议吗?

<?php
exec('at -f /var/www/html/job.txt now + 1 minutes');
>?

我认为主要问题是AT命令。如果我删除 AT 命令并使用“sh”命令它将起作用。

exec('sh /var/www/html/job.txt'); 

更新:

所以最后我发现了问题,SELinux 阻止了 apache 使用 atd 命令。现在,在我将 SELinux 设置为 Permissive 后,error_log 中不再出现“PAM 故障”。但是,我仍然遇到一些错误,我的 /var/log/httpd/error_log 出现 'job 47 at Sat May 26 22:38:00 2018',一切似乎都还好,但 my_job.php 不起作用。为什么?我错过了什么?

4

0 回答 0