我找到了这个页面:http://www.php.net/manual/en/configuration.file.php。在我的操作系统上:Fedora 17,Apache 2.2,PHP 5.4 我在 httpd.conf 文件中搜索了 PHPIniDir。此配置不存在。
那么 Apache 如何知道 php.ini 在哪里?(/etc/php.ini)
答案1
当未指定某些指令时,编译时默认值可作为故障保护。在这种情况下,如果未找到任何指令,PHP 模块“知道”在哪里查找 php.ini,因为它是以这种方式编程和编译的。
答案2
实际上,php 知道 php.ini 文件的位置。此信息很可能被纳入 PHP Apache 模块中,该模块要么由 PHP 版本生成,要么在 apache 编译期间使用 PHP 包。
答案3
我在一台服务器上安装了 Apache 和 PHP。这是由之前的系统管理员安装的。Apache 和 PHP 都是从源代码编译的。除此之外,还安装了默认的 PHP。因此,要知道 Apache 使用哪个 PHP。我运行以下命令
<Install Dir of PHP>/bin/php -i | grep apxs
这给了我 apache apxs 的路径
APACHE_HOME/bin/apxs
这给了我有关此 php 正在使用哪个 Apache 的信息。此路径和当前运行的 apache 相同。当我输入
#php -i | grep apxs
Failed loading opcache.so: opcache.so: cannot open shared object file: No such file or directory PHP Warning: PHP Startup: Unable to load dynamic library '<PHP_HOME>/lib/php/extensions/debug-non-zts-20121212/memcached.so' - <PHP_HOME>/lib/php/extensions/debug-non-zts-20121212/memcached.so: undefined symbol: OnUpdateLongGEZero in Unknown on line 0
因此,通过这种方式,我能够弄清楚 Apache 使用的 php。APACHE_HOME/modules/
目录包含所有模块,libphp5.so
并且已经存在于中APACHE_HOME/modules/
。