2012-07-16 79 views
0

我有一個額外的php.ini文件被加載的問題。 我指定要使用的配置目錄,但我不希望PHP在其他地方查找並加載其他php.ini或模塊。事實證明,/etc/php.d指定了不存在的模塊,因此我在調用函數時總會遇到錯誤。PHP:無視額外的ini文件

我該如何告訴PHP只查看我在httpd.conf中設置我的shell的PHPRC或PHPINIDIR所指定的位置?

Configuration File (php.ini) Path: /etc 
Loaded Configuration File:   /home/me/php/etc/php.ini 
Scan for additional .ini files in: /etc/php.d 
Additional .ini files parsed:  /etc/php.d/dbase.ini, 
/etc/php.d/mysql.ini, 
/etc/php.d/mysqli.ini, 
/etc/php.d/pdo.ini, 
/etc/php.d/pdo_mysql.ini, 
/etc/php.d/pdo_sqlite.ini 

我經常得到的錯誤是干擾JSON字符串我回到調用函數。錯誤是:

PHP Warning: PHP Startup: Unable to load dynamic library  
'/home/me/usr/lib64/php/modules/dbase.so' - /home/me/usr/lib64/php/modules/dbase.so: 
cannot open shared object file: No such file or directory in Unknown on line 0 

的dbase.so在/etc/php.d聲明的,因爲我們沒有獲得系統級設置,再說我無法將其刪除,其他一些用戶可能依靠默認設置(即使它們被破壞)。

謝謝。

回答

1

MikeC,這是webhosting共享安裝的常見問題。 PHP搜索列表是有意設計的,並有助於確保ISP可以執行ini包含。如果您無法訪問系統配置,則無法修復它。這是一個與您的託管服務提供商的服務/支持臺登錄的服務。指出錯誤並要求他們從conf.d目錄中刪除ini文件。

我以前也有過類似的問題。

至於「我經常得到的錯誤是干擾JSON字符串,我回到調用函數」,爲什麼你錯誤返回給用戶或AJAX例程呢?最好的做法是將錯誤記錄到文件中,所以這個內容不應該出現在你的JSON返回中。

+0

謝謝,特里。這是我的開發系統,所以我打開了所有錯誤報告。我同意你的觀點,即在製作過程中,這些類型的錯誤甚至不應該被用戶看到。 – AaplMike 2012-07-16 20:42:21

+0

訂單如何確定? – AaplMike 2012-07-16 20:59:19

+0

在構建php時,它取決於./configure指令。 --with-config-file-scan-dir選項設置要掃描的config目錄 - 通常爲'/ etc/php.d'或'/ etc/php5/apache2/conf.d'。這個目錄最後被掃描,所以這些ini文件可以覆蓋你放在主要ini中的任何東西。 – TerryE 2012-07-16 22:28:12

1
[email protected]:~$ php -c . -r 'var_dump(function_exists("mysql_connect"));' 
bool(true) 

[email protected]:~$ export PHP_INI_SCAN_DIR="" 
[email protected]:~$ php -c . -r 'var_dump(function_exists("mysql_connect"));' 
bool(false) 

-c確實匹配PHPIniDir apache的配置。 至於環境變量,你可以將它設置爲apache實例(例如在apache init腳本中),但這意味着你仍然需要操作系統級別控制