我的服務器中有一些PHP腳本用於數據庫維護,需要定期執行。顯然,最簡單的解決方案是使用系統cron安排其運行。
的腳本需要從$ _ SERVER訪問,如數據庫的主機名,cron的參數等一些服務器變量
我可以運行命令行預定的cron命令,沒有任何問題,一切似乎工作正常(調用類似於php的文件名.php)。然而,當同樣的命令是從cron執行腳本失敗,並報告錯誤是這樣的:
PHP公告:未定義指數:RDS_DATABASE在 的/ var /應用/電流/應用/ XX/DB第8行上的/ConnectionFactory.php PHP
似乎$ _SERVER變量在從cron運行時未正確初始化,但它可以從命令行運行。我試過用crontab -u ec2-user -e但沒有運氣。
我不想使用wget來運行腳本,因爲它增加了一些開銷,並且腳本隱藏從HTTP訪問。
有關從命令行成功訪問$ _SERVER的提示,但是從crontab運行時失敗?
變量的設置在哪裏? _SERVER是環境的一部分,所以我假設你的Apache配置中,在這種情況下,它們不可用於cron。您需要將它們導出爲環境變量 – Cfreak
爲什麼不將您需要的值(即數據庫端點)配置到腳本或某個配置文件中?如果你自己沒有添加它,爲什麼'RDS_DATABASE'變量甚至會被預期存在於'$ _SERVER'中? –
我使用$ _SERVER,因爲它們可以通過其控制檯管理輕鬆地從AWS Elastic Beanstalk進行配置。我在調試和發佈中有不同的服務器,並且我想更改實例之間的最小代碼。我想_SERVER是在apache中配置的。問題是爲什麼腳本在從命令行手動調用時運行,而不是從cron調用? –