如何让PHP文件自动运行?

时间:2012-12-11 00:36:13

标签: php cron

我有一个PHP文件 x.php ,每次运行时都会输出 b.xml 。我这样做的方法是使用crontab运行 x.php 文件。问题是由于服务器的设置,新文件的权限为400.所以我还有另一个crontab行将文件 b.xml 权限更改为777,以便 x.php < / strong>下次可以运行它。

我觉得我这太复杂了。有没有办法让这更简单?

4 个答案:

答案 0 :(得分:2)

快速回答

您需要在x.php脚本中将文件chmod为777。

创建b.xml后,运行以下行:

chmod('path/b.xml', 0777);

注意在使用chmod时应始终指定o​​ctals。

更好的方法?

运行cron作业时,应特别注意运行cronjob的用户。

通常在共享服务器上,您将拥有自己的登录名,因此cron作业将以该用户身份运行。我的问题是 - 用户和您的网络服务器一样吗?经常php运行为“apache”,而cron可能以“tanner”运行。在这种情况下,将b.xml设置为由tanner拥有,并具有权限400意味着只有tanner才能更改该文件。 要解决此问题,如果您无权访问umask,一种方法是将您的cron作业更改为以网络服务器身份运行:

su -c "php /home/jonathan/public_html/b.php" apache

这可能会也可能不会起作用,具体取决于您是否允许以用户身份切换到apache。不要忘记将apache切换到实际的Web服务器用户名。

现在,如果这不起作用,那么替代方法是获得777权限。请记住共享服务器,这意味着如果知道路径,该服务器上的任何人都可能会访问该文件。

OP提出的另一种方式:

0,10,20,30,40,50 * * * * /usr/bin/wget http://example.com/user/x.php

这种方式将始终作为apache运行的apache(或其他)用户运行,确保下次访问它时,该文件将可用。

答案 1 :(得分:0)

这应该有效:

// set permission
chmod('path/to/b.xml', 777);

// do other stuff

答案 2 :(得分:0)

要求服务器管理员创建一个拥有脚本写入xml文件的文件夹的新用户。 以这样的用户身份通过​​你的cron作业运行你的php脚本。如果您将脚本作为文件夹的所有者运行,则可以通过php脚本更改权限。

答案 3 :(得分:0)

为了解决这个问题,我最终只创建了一个cronjob,如:

0,10,20,30,40,50 * * * * /usr/bin/wget http://example.com/user/x.php

这执行了创建b.xml的文件,并且由于执行脚本的用户是公共的,因此权限也是公开的。