php.ini 没有被读取

Ton*_*ony 0 php installation configuration

我将 PHP 配置为在 /etc/php5/apache2 中查找 php.ini 文件。phpinfo() 的输出表示路径设置正确,但也表示未加载配置文件。我暂时将 php.ini 权限更改为 777 以测试该问题,而权限不是问题。还有什么问题?

当我编译 php 时,我做了:

sudo ./configure --with-apxs2=/usr/sbin/apxs --with-mysql --enable-so --with-config-file-path=/etc/php5/apache2 --sysconfdir=/etc/php5 --with-config-file-scan-dir=/etc/php5/conf.d
Run Code Online (Sandbox Code Playgroud)

phpinfo() 说:

Configuration File (php.ini) Path           /etc/php5/apache2 
Loaded Configuration File                   (none)
Scan this dir for additional .ini files     (none) 
Additional .ini files parsed                (none) 
Run Code Online (Sandbox Code Playgroud)

另外 php --ini 说:配置文件 (php.ini) 路径:/usr/local/lib 加载的配置文件:/etc/php5/apache2/php.ini 扫描其他 .ini 文件:(无)其他 .ini解析的文件:(无)

如果我将 php.ini 放在 /usr/local/lib 中,则配置文件加载正常(尽管不会加载额外的 .ini 文件)。我不确定为什么会发生这种情况,因为我在编译 PHP 时设置了选项。

Dav*_*ley 6

核心选项是在 strace 下运行 apache,以查看它在尝试读取 php.ini 文件时在做什么。

运行“ps aux”以查找 apache 的命令行,然后停止该进程。现在运行:

# strace -efile -f -o /tmp/apache.log /usr/sbin/apache2 -k start
Run Code Online (Sandbox Code Playgroud)

在浏览器中请求 phpinfo() 页面,然后使用 ctrl-c 终止 strace。您现在可以 grep /tmp/apache.log for php.ini 并查看当它尝试读取该文件时是否显示任何错误。这将向您显示诸如找不到文件或权限问题之类的问题。

如果有一个 open() 调用返回一个数字,那么它似乎正在正确读取文件,并且该文件肯定存在问题阻止 php 正确解析它,但我希望这是记录在错误日志中。