如何通过bash从服务器调用php脚本?

时间:2011-08-10 06:48:37

标签: php bash

我想每天执行一个PHP脚本。我有一个包含下面行的bash脚本。我正在用那个剧本做这件事。但通过这种方式,它可以从另一台计算机执行。让我们说webservername =“slmnbr”任何身体都可以用

调用myscript

xhttp://slmnbr/myscript.php

我想从服务器上调用它。

BASE_URL=http://`get-webservername`
/usr/bin/wget --no-check-certificate --timeout=0 -O - "$BASE_URL/myscript.php"

提前致谢

3 个答案:

答案 0 :(得分:2)

您需要使用PHP CLI(命令行界面)来执行此操作。它通常附带PHP安装包(或单独的包)。

因此,正如@James提到的那样,您需要在脚本名称前面加上CLI PHP可执行文件,它位于安装目录中的某个位置php.exe

在UN * X系统中,它位于/usr/bin/usr/local/bin/opt/local/bin的某处。如果它在PATH中你可以简单地执行它:

php your_script.php

但请记住,从服务器运行脚本与从Web服务器运行脚本不同。对于例如您将不会拥有POSTGET个变量。所以你的脚本可能无效。

更新

您可以通过http守护程序运行PHP脚本的用户(通常为www-data)使您的Web服务器无法访问cron运行脚本。

我建议只能由从cron运行它的用户读取它:

chown cronuser your_script.php
chmod 0400 your_script.php

UPDATE2

如果您使用与网络服务器相同的用户在cron中运行脚本,则在脚本顶部停止执行:

if (!(php_sapi_name() == 'cli' && empty($_SERVER['REMOTE_ADDR']))) {
  header('HTTP/1.1 403 Forbidden');
  exit;
}

答案 1 :(得分:1)

要每天执行任务(或php脚本),请使用cron

该链接包含您需要的所有信息,包括如何防止外部访问。

答案 2 :(得分:0)

对于任何最新版本的“php”,您应该获得一个名为的独立可执行文件: “php.exe

只需执行此操作:

/usr/local/php.exe your_script.php