2013-04-17 63 views
0

我試圖使用帶有敏感信息的PHP腳本,所以我正在使用includes來託管webroot上面的密碼。當以cron作業運行時,訪問PHP包含上述webroot

該腳本可以通過瀏覽器正常運行,但是當我將它作爲crob作業運行時,它會生成有關include的錯誤消息。

open_basedir設置是:/ var/www/vhosts/xxx /:/ tmp/- 想知道這裏是否有關?

感謝您提供有關如何解決此問題或解決方法的任何建議。

PHP Warning: include(../includes.php): failed to open stream: No such file or directory in /var/www/vhosts/xxx.com/httpdocs/linkedin_status.php on line 6 
PHP Warning: include(../includes.php): failed to open stream: No such file or directory in /var/www/vhosts/xxx.com/httpdocs/linkedin_status.php on line 6 
PHP Warning: include(): Failed opening '../includes.php' for inclusion (include_path='.:') in /var/www/vhosts/xxx.com/httpdocs/linkedin_status.php on line 6 
PHP Notice: Use of undefined constant API_KEY - assumed 'API_KEY' in /var/www/vhosts/xxx.com/httpdocs/linkedin_status.php on line 88 
PHP Notice: Use of undefined constant SCOPE - assumed 'SCOPE' in /var/www/vhosts/xxx.com/httpdocs/linkedin_status.php on line 89 
PHP Notice: Use of undefined constant REDIRECT_URI - assumed 'REDIRECT_URI' in /var/www/vhosts/xxx.com/httpdocs/linkedin_status.php on line 91 
+2

你是否嘗試爲你的'include'使用絕對路徑?我設法通過這種方式解決類似的問題 – Fabio

回答

2

這總是對我的作品......

require_once("/full/path/to/your/file/includes.php"); 
+0

謝謝 - 非常有意義。 – jsuissa

1

什麼,你可能遇到的是,的cronjob使用不同的php.ini,因此使用不同的設置。要確認這一點,您可以創建一個php腳本,將phpinfo();結果寫入文件。在輸出中,您將看到正在使用哪個php.ini。

你能做些什麼來解決這個問題可以是:

  • 在執行的cronjob指定php.ini中被使用。
  • 通過一個wget命令運行cronjob,該命令通過webserver(如瀏覽器)實際執行腳本。 Wget是一個命令提示工具(不是PHP!),它從互聯網調用一個url並將其寫入屏幕或文件。