我的test.php
文件如下:
<?php
echo $_SERVER["myEnvVariable"];
echo getenv("myEnvVariable");
以上将返回我的设置环境变量两次。从服务器外部调用脚本时,它可以正常工作。
如果我使用命令行命令在服务器上调用相同的脚本:
php test.php
或使用cronjob
****** curl http://localhost/test.php
什么都没有。
如何在服务器本身内提供环境变量?我在Apache httpd.conf
文件中设置我的环境变量。
答案 0 :(得分:2)
以这种方式执行cron作业:
myEnvVariable=value php test.php
变量将来自getenv("myEnvVariable")
,而不是$_SERVER
。
答案 1 :(得分:1)
尝试在cron中将wget设置为http://address.domain/test.php。 我知道这不是解决办法,但可能有所帮助。
答案 2 :(得分:0)
我建议你对你的文件进行特殊的卷曲调用。像这样:
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称为呼叫服务器的有效用户。它对我有用。
答案 3 :(得分:0)
如果您有很多环境变量,请尝试此操作
将环境条目导出到文件中
env >> /etc/environment
添加CRON作业 crontab -e
5,35 * * * * . /etc/environment; /usr/local/bin/php /srv/app/artisan schedule:run >> /dev/null 2>&1
CRON :在每小时的05、35运行php调度程序,其中包含所有环境变量的来源。 (用您的命令替换)