仅通过cron运行php脚本
我知道如何使用cron运行脚本,但我需要的是能够仅通过cron运行脚本仅通过cron运行php脚本,php,cron,Php,Cron,我知道如何使用cron运行脚本,但我需要的是能够仅通过cron运行脚本 谢谢大家! 尝试仅为cron守护进程用户授予执行权限,这样您可能会得到您想要的 问候 为此,您需要一个PHP CLI/CGI可执行文件。假设php程序位于/usr/local/bin/php,您可以使用: /usr/local/bin/php /path/to/your/script.php 另请参见:如本重复线程中所述: 您应该将此文件保存在public_html之外 然而,有时这是不可能的。我想到了一个类似的地方。他
谢谢大家! 尝试仅为cron守护进程用户授予执行权限,这样您可能会得到您想要的
问候 为此,您需要一个PHP CLI/CGI可执行文件。假设
php
程序位于/usr/local/bin/php
,您可以使用:
/usr/local/bin/php /path/to/your/script.php
另请参见:如本重复线程中所述: 您应该将此文件保存在public_html之外 然而,有时这是不可能的。我想到了一个类似的地方。他们就是这样做的 从
cron.php
:
...
/// The current directory in PHP version 4.3.0 and above isn't necessarily the
/// directory of the script when run from the command line. The require_once()
/// would fail, so we'll have to chdir()
if (!isset($_SERVER['REMOTE_ADDR']) && isset($_SERVER['argv'][0])) {
chdir(dirname($_SERVER['argv'][0]));
}
...
/// check if execution allowed
if (isset($_SERVER['REMOTE_ADDR'])) { // if the script is accessed via the web.
if (!empty($CFG->cronclionly)) {
// This script can only be run via the cli.
print_error('cronerrorclionly', 'admin');
exit;
}
// This script is being called via the web, so check the password if there is one.
if (!empty($CFG->cronremotepassword)) {
$pass = optional_param('password', '', PARAM_RAW);
if($pass != $CFG->cronremotepassword) {
// wrong password.
print_error('cronerrorpassword', 'admin');
exit;
}
}
}
...
您应该将此脚本保留在公用文件夹之外。此外,请为该文件设置适当的权限,以便公共用户无法执行脚本。 将下面的代码片段放在脚本的顶部
if(php_sapi_name() !== 'cli'){
die('Can only be executed via CLI');
}
注意,在设置cron作业时,需要使用PHP可执行文件的完整路径。
Ex:/usr/local/bin/php(您的路径可能与此不同)请将此脚本添加到php文件的顶部:
$isCLI = ( php_sapi_name() == 'cli' );
if( !$isCLI )
die("Sorry! Cannot run in a browser! This script is set to run via cron job");
如果您试图通过浏览器运行PHP文件,则无法运行它。将显示此错误消息。但同时,它可以通过cron作业运行 你能说得更具体些吗?您希望在web上隐藏php脚本,并仅通过cron?可能的副本使用它。请参阅问题的答案,该答案将被选为副本。如上所述,这并不总是可能的。教授别人很好,但下一次考虑不可能。