我如何才能只从cron运行一个php脚本,或者是否可以检查请求是否来自cron?
爱德华兹
我试图用参数调用php文件。但都不管用:
php -q /home/domain/public_html/cronjob.php?i=a
php -q /home/domain/public_html/cronjob.php par1
php -q /home/domain/public_html/cronjob.php par1=a
php -q /home/domain/public_html/cronjob.php par1='a'
我不能使用$_GET、$_SESSION或$argv。如何调用带参数的文件?
5条答案
按热度按时间iovurdzv1#
如果你问这个问题是因为你需要检查脚本是否从web请求中被调用,你可以使用
php_sapi_name
函数来查看调用的方法-如果它是一个cron作业,该函数应该返回cli
,表示命令行调用。但是,它并不能帮助区分cron作业和常规命令行调用。如果您还需要区分cron作业和脚本的命令行调用,您可以检查运行脚本的用户,看看应该运行cron作业的用户是否相同。例如,在 *nix系统上,可以使用
posix_getuid
或posix_getlogin
函数来完成。最后,如果你担心有人以cron作业所有者的身份登录并从命令行运行脚本,你应该使用一个没有shell的单独用户来执行cron作业。
62lalag42#
你可以给你的脚本传递一个参数,说明它是在cron作业中被调用的。看看这个问题:cron-jobs-calling-a-php-script-with-variables
qgzx9mmu3#
给你的脚本传递一些只存储在cron_script和receiver脚本中的auth密钥怎么样?在调用时检查authkey是否通过接收方脚本中的$_GET ['auth_key']传输。
喜欢:http://www.example.com/receiver_script.php?auth_key=“WhatEverYouWant”
ijxebb2r4#
好吧,我找到解决办法了。如果你想用GET参数调用php文件,你应该这样调用file:
你可以使用$_GET在php文件中获取这些数据:
或argv:
如果你只想给argb传递一个参数:
我在网站上找到的其他例子不起作用,但这些工作很好。
xfyts7mz5#
您可以将客户端IP地址与服务器IP地址进行比较,也可以在CronJob地址中使用令牌,如下所示: