2012-07-16 78 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脚本中),但这意味着你仍然需要操作系统级别控制