2011-10-27 18 views
3

我正在建立我的(Wordpress)解決方案在新的生產服務器上的重要工作。我現在發現PHP函數define不工作。PHP定義不註冊常量

我有這行代碼在我functions.php

define('INCLUDE_DIR', $_SERVER['DOCUMENT_ROOT'] . '/wp-content/themes/storelocator/include/'); 

測試下面的代碼:

if (!defined('INCLUDE_DIR')) 
    echo ' NOT SET! '; 

輸出NOT SET

根據this page,我在include聲明中使用常量正確。 functions.php中的其他代碼運行良好。我查過了。

這是由於一些PHP配置?我使用PHP v5.3.8

UPDATE:

define()functions.php文件的最頂端。
if聲明位於some-file.php的最頂端。

我很確定functions.phpsome-file.php之前運行。

UPDATE
看來,因爲我在我的PHP文件的底部有空行我得到這個錯誤。我刪除空行,現在它似乎工作: -/

+3

你確定在包含/需要functions.php之前,你做了你的定義()檢查?假設你在這樣一個簡單的廣泛使用的函數中發現了一個PHP錯誤,正在推動一些事情。 –

+0

你可以顯示哪些包含的functions.php與檢查相關嗎? – Patrick

+0

@Marc B - 'functions.php'在任何其他WP模板文件之前運行,對吧?所以'functions.php'應該在我使用'defined()'的'some.template.php'文件之前運行。 – Steven

回答

1

必須調用define()功能之前,你檢查,看看恆一直defined()。如果你這樣做(嘗試把你的define電話立即撥打defined電話),然後我看不到沒有理由不起作用。

+0

Se我更新的文本和評論給Marc B. – Steven

+0

你能否確認你沒有把函數內的函數意外地放進去? – Benjie

+0

我網站的所有常量都放在了functions.php中,而沒有其他地方。我確信這一點。它可以在我的本地服務器和我以前的測試服務器上正常工作,而不是在這臺新服務器上。 – Steven

1

我剛剛有完全相同的問題,並通過從常量的名稱中刪除下劃線來解決它。希望這有助於。