我有一个PHP脚本需要每天执行一次,太平洋时间凌晨3:05。我目前在我的网站的根目录中有脚本(例如,http://example.com/script.php),因此,任何在浏览器中导航到它的人都可以执行该脚本。我的服务器布局如下:
/家庭/ [用户] /example.com /
example.com 文件夹是该域的根目录。我读了另一个关于此的帖子:
据说我应该将脚本移到公共目录之外,所以在我的情况下我会将它移动到 [user] 文件夹。目前我的Cron作业命令如下所示:
/ usr / local / php5 / bin / php /home/[user]/example.com/script.php
(我当然使用伪名称。)我是否只需移动文件并将命令更改为:
/ usr / local / php5 / bin / php /home/[user]/script.php
它会正常运行,但公众无法使用吗?由于脚本已经在Cron中运行,因此已经使用绝对路径(而不是相对路径)设置它需要包含的文件,所以这应该是一个简单的移动和编辑,对吗?
答案 0 :(得分:7)
您有几种选择:
添加一些检查,例如:
<?php
if( ! isset($argv) )
die("cannot run!");
检查脚本运行的模式:
$isCLI = ( php_sapi_name() == 'cli' );
if( !$isCLI )
die("cannot run!");
答案 1 :(得分:0)
你能告诉我们脚本的用途,如果它正在做一些简单的事情,例如mysql修剪:
5 3 * * * * root mysql -u username -e "UPDATE users SET days = days-1;"
可能更好,同样:
5 3 * * * * root /usr/local/php5/bin/php -r "$normal = 'php';code();$here"
可以做到这一点吗?
答案 2 :(得分:-1)
我最终做的只是将它移出公共目录,进入我的主文件夹。 CRON仍然可以从那里访问和执行它。谢谢你的帮助。