Apache PHP 模块如何知道 php.ini 文件位于何处?

Apache PHP 模块如何知道 php.ini 文件位于何处?

我找到了这个页面: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/

相关内容