PHP - 从 Cron 作业/命令行调用脚本时环境变量不可用
PHP - Environment Variables Not Available When Script Called From Cron Job / Command Line
我的 test.php
文件如下所示:
<?php
echo $_SERVER["myEnvVariable"];
echo getenv("myEnvVariable");
以上将return我的环境变量设置两次。它在从服务器外部调用脚本时起作用。
如果我使用命令行命令在服务器上调用相同的脚本:
php test.php
或使用 cronjob[=6=]
****** curl http://localhost/test.php
return什么都没有。
如何在服务器本身内提供我的环境变量?我在 Apache httpd.conf
文件中设置我的环境变量。
尝试在 cron 中将 wget 设置为 http://address.domain/test.php。
我知道这不是解决方案,但可能会有所帮助。
以这种方式执行 cron 作业:
myEnvVariable=value php test.php
变量将从 getenv("myEnvVariable")
开始提供,而不是 $_SERVER
。
我建议您对文件进行特殊的 curl 调用。像这样:
test.php(这是你的文件,这里没有改动)
specialcurl.php:
<?php
$curl = curl_init('http://www.youraddresshere.com/pathtofile/test.php');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
echo $result;
curl_close($curl);
?>
现在,运行 使用 php 命令来自服务器的 specialcurl.php 脚本为:
php specialcurl.php
此处的重点是将您的 test.php 作为调用服务器的有效用户来调用。它对我有用。
如果你有很多环境变量试试这个,
将环境条目导出到文件
env >> /etc/environment
添加 CRON 作业 crontab -e
5,35 * * * * . /etc/environment; /usr/local/bin/php /srv/app/artisan schedule:run >> /dev/null 2>&1
CRON: 运行 php 调度程序在每小时 05、35 与所有环境变量的来源。 (替换为您的命令)
我的 test.php
文件如下所示:
<?php
echo $_SERVER["myEnvVariable"];
echo getenv("myEnvVariable");
以上将return我的环境变量设置两次。它在从服务器外部调用脚本时起作用。
如果我使用命令行命令在服务器上调用相同的脚本:
php test.php
或使用 cronjob[=6=]
****** curl http://localhost/test.php
return什么都没有。
如何在服务器本身内提供我的环境变量?我在 Apache httpd.conf
文件中设置我的环境变量。
尝试在 cron 中将 wget 设置为 http://address.domain/test.php。 我知道这不是解决方案,但可能会有所帮助。
以这种方式执行 cron 作业:
myEnvVariable=value php test.php
变量将从 getenv("myEnvVariable")
开始提供,而不是 $_SERVER
。
我建议您对文件进行特殊的 curl 调用。像这样:
test.php(这是你的文件,这里没有改动)
specialcurl.php:
<?php
$curl = curl_init('http://www.youraddresshere.com/pathtofile/test.php');
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($curl);
echo $result;
curl_close($curl);
?>
现在,运行 使用 php 命令来自服务器的 specialcurl.php 脚本为:
php specialcurl.php
此处的重点是将您的 test.php 作为调用服务器的有效用户来调用。它对我有用。
如果你有很多环境变量试试这个,
将环境条目导出到文件
env >> /etc/environment
添加 CRON 作业 crontab -e
5,35 * * * * . /etc/environment; /usr/local/bin/php /srv/app/artisan schedule:run >> /dev/null 2>&1
CRON: 运行 php 调度程序在每小时 05、35 与所有环境变量的来源。 (替换为您的命令)