【发布时间】:2020-04-30 07:40:20
【问题描述】:
所以,伙计们,我有以下代码:
<?php
$url = "http://example.com/filetorun.php";
$time = date('g:i A d.m.Y', $res['sometime']);
echo `echo "wget --spider {$url}" | at -M {$time}`;
?>
主要思想是在特定时间wget一些url,为我执行一些有用的操作。
终端会发生什么?
当我运行这个 bash 代码时。它给我这样的输出效果很好:
warning: commands will be executed using /bin/sh
job 59 at Mon Jan 13 17:12:00 2020
当我运行我的 php 脚本时 /var/log/apache2/error.log 会发生什么?
它得到这个输出。
atq 怎么样?
只有当我通过终端创建作业时,我才能在那里看到作业。当我从 php 脚本创建它时,我不能这样做。
我尝试过做什么?
我将用户添加到 /etc/at.allow 并从 /etc/at.deny 中删除他们
【问题讨论】:
-
你为什么要
echo一个echo然后输出一个wget命令?你为什么不为此使用exec()(php.net/manual/de/function.exec.php)? -
webserver 不应该执行脚本,越深入就会遇到越来越多的问题。根本不要掏空(到 wget 或到 at)(以不安全的方式,不少于):使用例如cron 和 php_curl 库直接从 PHP 发出请求:php.net/manual/en/curl.examples-basic.php
-
@thmspl:注意管道:这应该将命令发送到
at,而不是直接执行。 linux.die.net/man/1/at -
@thmspl 我也尝试通过 exec() 执行它,它给了我相同的结果:c
-
这个问题真的是要解释 PHP/Apache 和您的终端帐户是不同的吗?
标签: php linux apache ubuntu at-job