2014-06-05 71 views
1

我需要包括在PHP文件,所以我做PHP通過set_include_path我逼瘋了

$web_proc = '../res/proc'; //variable read from config file I can't change 
//in my file 
include_once($web_proc . '/check_sprache.php'); 

和PHP輸出:

警告:include_once(../ RES的/ proc/check_sprache.php ):未能打開 流:沒有這樣的文件或目錄 /Users/user/Sites/site/res/pdf/rechnung.php on line 62
Warning: include_once():失敗打開'../res /proc/check_sprache.php'爲 夾雜物(包含路徑= ':')在 /Users/user/Sites/site/res/pdf/rechnung.php在線路62上

所以我改變包括路徑:

set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__DIR__) . DIRECTORY_SEPARATOR); 

,並再次嘗試,但PHP輸出:

警告:include_once(../ RES的/ proc/check_sprache.php):未能打開 流:在 /用戶/用戶沒有這樣的文件或目錄/第62行網站/網站/ res/pdf/rechnung.php 警告: include_once():在 /Users中打開'../res/proc/check_sprache.php'爲 包含(include_path ='。::/Users/user/Sites/site/res /')失敗/user/Sites/site/res/pdf/rechnung.php在線62

但是,如果,如果我做

include_once(dirname(__DIR__). DIRECTORY_SEPARATOR . $pfadweb_proc . '/check_sprache.php'); 

它的工作原理。但是這不是解決方案,因爲包含的文件包含更多帶有相對路徑的文件,所以找不到它們。

因此,無論我誤解PHP包含路徑,或者它只是拖動我。

任何人都可以幫忙嗎?

+0

PHP'include_path'僅用於未錨定的路徑(無前導'/'或'.'或'''關係)。如果您無法使用相對路徑,請使用'$ _SERVER [「DOCUMENT_ROOT」]' - 綁定路徑。 – mario

+2

@mario no no no!爲什麼要引入像文檔根那樣的外部依賴關係?它排除了您在除Web服務器以外的任何環境下運行腳本的情況。 – Phil

回答

0

包含路徑在第二個例子中看起來很奇怪;你有兩個PATH_SEPARATOR個字符和一個尾隨DIRECTORY_SEPARATOR,但我懷疑這是問題所在。

試試這個,而不是

set_include_path(implode(PATH_SEPARATOR, [ // use array() if PHP < 5.4 
    dirname(__DIR__), // this should be /Users/user/Sites/site/res 
    get_include_path() 
])); 

include_once 'proc/check_sprache.php'; 

這將CWD(/Users/user/Sites/site/res/pdf)的父目錄(/Users/user/Sites/site/res)添加到您的包含路徑。

任何其他文件中的include語句都可以使用/Users/user/Sites/site/res的相對路徑。

+0

已經嘗試過,但沒有改變。警告:include_once():打開'../res/proc/check_sprache.php'包含失敗(include_path ='/ Users/user/Sites/site /水庫:。:')在第67行的/Users/user/Sites/site/res/pdf/rechnung.php中 – beatjunky99

+0

@ bj99當你調用include時,爲什麼仍然包含'../ res'?我的回答明確告訴你如何使用 – Phil

+0

查看我對初始文章所做的更改。我不能改變var $ web_proc。 : - /並且包含check_sprache.php的文件通過在include語句中使用相同的變量$ web_proc包含在內。 – beatjunky99