2009-06-13 162 views
2

我有一個WordPress插件,我想在localhost上以及在部署中不加修改地工作,但似乎無法使用一個語句設置目錄的位置。如何讓DOCUMENT_ROOT在本地主機和Web主機上都能正常工作?

我想做到這一點:

$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/wp-content/cache'); 

雖然是虛擬主機上的工作。在本地主機上它產生這個錯誤:

C:/xampp/htdocs/wp-content/cache/a547b8792c3144c98549be23ef1465e7.spc is not writeable 

在本地主機上,我需要將其設置爲這個來得到它的工作:

$feed->set_cache_location($_SERVER['DOCUMENT_ROOT'] . '/mysite/wp-content/cache'); 

當然必須有一些作品無論在本地主機和網絡上主辦!

謝謝。

回答

3

所以它看起來像OP會對WP_CONTENT_DIR或WP_PLUGIN_DIR預定義的常量感興趣。

這是爲Wordpress安裝。但對於非WP的情況下,我發現下面的代碼片段是有用的:

$docroot = realpath((getenv('DOCUMENT_ROOT') && ereg('^'.preg_quote(realpath(getenv('DOCUMENT_ROOT'))), realpath(__FILE__))) ? getenv('DOCUMENT_ROOT') : str_replace(dirname(@$_SERVER['PHP_SELF']), '', str_replace(DIRECTORY_SEPARATOR, '/', dirname(__FILE__)))); 

這是在我想的東西上都有了本地主機/開發環境和服務器環境中工作類似的情況,文獻根據地點不同。但更重要的是,這在需要單獨運行PHP文件的情況下起作用。

+0

這並不適用於我 - 返回包含文件名的路徑。 if(!$ _ SERVER ['DOCUMENT_ROOT'])$ _SERVER ['DOCUMENT_ROOT'] = realpath(dirname(__ FILE __)。'/ .. /' ); – besimple 2015-07-29 10:21:11

相關問題