![如何设置 CRON 来执行公共 html 文件夹之外的 php 文件?](https://linux22.com/image/1288645/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20CRON%20%E6%9D%A5%E6%89%A7%E8%A1%8C%E5%85%AC%E5%85%B1%20html%20%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B9%8B%E5%A4%96%E7%9A%84%20php%20%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我有一个 php 文件,例如位于:
/data/web/process.php
此文件不公开(该文件夹中没有运行虚拟主机,但安装了 apache)。我需要每天每分钟执行此文件。
我知道我可以用 打开 crontab crontab -e
,但我不确定我应该向文件中写入什么才能使我需要做的事情有效。
请问有什么帮助吗?
答案1
运行crontab -e
并添加行:
* * * * * /usr/bin/php -f /data/web/process.php 2>&1 >> /path/to/output/file.log
在执行此操作之前,请确保它能/usr/bin/php -f /data/web/process.php
满足您的要求。另请注意,cron 将以调用 的同一用户身份运行它crontab -e
,因此如果您以用户 rimmer 身份运行它,它将以 rimmer 身份运行,如果以 root 身份运行,它将以 root 身份运行。
如果你希望以 apache 用户身份执行,请执行以下操作:
sudo -u www-data crontab -e
假设 www-data 是您的 apache 用户。您还可以创建一个文件/etc/cron.d/my-php-job
。
确保没有坏人可以编辑 /data/web/process.php 文件并仔细检查该文件。我会将此文件设为 root 所有并具有 644 权限。不要将其设为 apache 用户所有并可写。
答案2
请尝试以下操作:
/path/to/php -f /data/web/process.php