问题描述
我想从php脚本文件设置cron作业。我可以使用shell_exec()函数执行php文件。但我不能运行cron工作相关的命令。 $ output = shell_exec(crontab -l);
此命令不工作。我的cronjob位于/ usr / bin / crontab下。我将文件预先设置为777,并以root访问权限执行此命令。仍然没有运气。
I wanted to set cron job from php script file. I can able to execute php file using shell_exec() function. But Im not able to run cron job related commands. $output = shell_exec("crontab -l");
this command is not working. My cronjob located under /usr/bin/crontab. I set the file premission to 777 and im executing this command with root access. still no luck. can anyone help me?
推荐答案
您的crontal -l命令只显示您的用户在其个人crontab中排定的内容。它可能返回一个空字符串,取决于您当前的个人crontab。
不要混淆文件/ etc / crontab,这是一个系统范围的crontab,对于所有用户,只能由root写入。
Your "crontal -l" command just displays what's scheduled for your user in its personal crontab. It might return an empty string, depending on your current personal crontab.Don't mix up with the file /etc/crontab which is a system-wide crontab, for all users, writable by root only.
需要的是 - 我想我的理解 - 添加一个工作在crontab从PHP脚本,也许你可能只是想尝试像:
If your need is - as I think I understood - to add a job in the crontab from a php script, maybe you might simply want to try something like :
$r=shell_exec('cat "30 6 * * * user my_cmd my_args" >> /etc/crontab');
要安排my_cmd my_args,以user运行,每天上午6:30例。
这个PHP脚本应该以root身份启动,因为只有他可以在/ etc / crontab中写入。
To schedule "my_cmd my_args", running as "user", 6:30 am every day, for example.This PHP script should be started as root as only him can write in /etc/crontab.
注意:我希望你的php脚本不是从网站启动,但在命令行从限制访问的环境,以限制安全风险,特别是如果你做某事,以使其作为根启动。这种脚本在你的系统中是一个很大的洞。请考虑这一点。这是我的建议。
顺便说一下,/ usr / bin / crontab的权限回到:
By the way, /usr/bin/crontab's permissions back to :
-rwxr-sr-x 1 root crontab 35040 19déc。 2010 / usr / bin / crontab
(来自Debian系统的示例)。
-rwxr-sr-x 1 root crontab 35040 19 déc. 2010 /usr/bin/crontab(example from a Debian system).
这篇关于如何从php脚本调用cron作业?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!