1

我在加载其他 php.ini 文件时遇到问题。我指定了要使用的配置目录,但我不希望 PHP 在其他地方查找并加载其他 php.ini 或模块。事实证明,/etc/php.d 指定了不存在的模块,所以我在调用函数时总是出错。

如何告诉 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 中声明,我无法删除它,因为我们无权访问系统级设置,此外,其他一些用户可能依赖默认设置(即使他们坏了)。

谢谢。

4

2 回答 2

2
poncha@localhost:~$ php -c . -r 'var_dump(function_exists("mysql_connect"));'
bool(true)

poncha@localhost:~$ export PHP_INI_SCAN_DIR=""
poncha@localhost:~$ php -c . -r 'var_dump(function_exists("mysql_connect"));'
bool(false)

-c实际上匹配PHPIniDirapache 配置。至于环境变量,您可以为 apache 实例设置它(例如在 apache init 脚本中),但这意味着您仍然需要操作系统级别的控制

于 2012-07-16T06:46:33.993 回答
1

MikeC,这是虚拟主机共享安装的常见问题。PHP 搜索列表是设计使然,有助于确保 ISP 可以强制执行 ini 包含。如果您无权访问系统配置,则无法修复它。这是与您的托管服务提供商的服务/支持台登录的一个。指出错误并要求他们从 conf.d 目录中删除 ini 文件。

我过去也遇到过类似的问题。

As to "The error I constantly get is interfering with the JSON string I'm returning to calling functions", why are you returning errors to the user or AJAX routines anyway? Best practice is to log errors to file, so this content shouldn't appear in your JSON returns anyway.

于 2012-07-16T07:49:20.293 回答