gpt4 book ai didi

PHP.ini 不会自动加载,即使它存在于配置位置

转载 作者:可可西里 更新时间:2023-10-31 22:07:16 27 4
gpt4 key购买 nike

好的,这可能只是我对 php 的了解不够,但它就在这里。

我在 Ubuntu Hardy 上。我有一个使用这些参数编译的 PHP 自定义编译版本。

./configure
--enable-soap
--with-zlib
--with-mysql
--with-apxs2=[correct path]
--with-config-file-path=[correct path]
--with-mysqli
--with-curlwrappers
--with-curl
--with-mcrypt

我使用了命令 pecl install pecl_http安装 http.so 扩展。它位于我的 php.ini 的正确模块目录中。我的 php.ini 正在加载,我可以更改 ini 中的内容并影响 php。我已包含 extension=http.so在我的 php.ini 中行。

那工作得很好。直到我添加了这些编译选项以添加 imap
--with-openssl
--with-kerberos
--with-imap
--with-imap-ssl

失败是因为我需要由 apt-get install libc-client-dev 修复的 c-client 库之后 php 编译得很好,我有工作 imap 支持,哇。

但是,现在我对 HttpRequest 的所有调用(它是 http.so 中 pecl_http 扩展的一部分)导致 Fatal error: Class 'HttpRequest' not found错误。我认为 http.so 模块由于某种原因不再加载,但我找不到任何显示原因的错误。

您可能会说“您是否尝试过撤消新的 imap 设置?”我会回答的。是的,我有。我直接撤消了所有配置更改并卸载了 c-client 库,但仍然无法正常工作。我觉得这很奇怪......我没有做任何会导致这个问题的更改。在查看之后,我还发现不仅不再加载 http 扩展,而且我通过 php.ini 加载的所有扩展也不再加载。

有人至少可以给我一些进一步的调试步骤吗?到目前为止,我已经尝试启用所有错误,包括我的 php.ini 中的启动错误,这适用于其他错误,但我在命令行或通过 apache 都没有看到任何启动错误。鉴于如果我运行 php_info() 我会得到 php.ini 中的设置,因此似乎再次解析了 php.ini。

编辑 似乎只听了一些 php.ini 设置。有没有办法测试我的 php.ini?

编辑编辑看来我又弄错了,php.ini 不再被加载。但是,如果我运行 php_info() 我会发现它正在正确的位置寻找我的 php.ini。

编辑 编辑 编辑 我的配置位于下面的配置文件路径位置,但它说没有加载配置文件。 WTF权限问题?它目前是 644,所以如果不写,每个人都应该能够阅读它。我尝试将其设为 777,但没有成功。
Configuration File (php.ini) Path   /etc/php.ini
Loaded Configuration File (none)

编辑 编辑 编辑 编辑 通过使用 -c 命令在命令行上加载 ini,我能够运行我的文件并使用 -m 显示我的模块已加载
所以 php.ini 没有任何问题

编辑 编辑 编辑 编辑 编辑 我已经向我指出,我的 ini 目录配置应该是在文件本身中查找 php.ini 文件的路径。为此,我尝试了设置/etc、/etc/,并让 php 设置默认目录,然后将我的 ini 文件移动到该目录中。全部失败:(

编辑 编辑 编辑 编辑 编辑 我已经向我指出,我的 ini 目录配置应该是在文件本身中查找 php.ini 文件的路径。为此,我尝试了设置/etc、/etc/,并让 php 设置默认目录,然后将我的 ini 文件移动到该目录中。全部失败:(

编辑 编辑 编辑 编辑 编辑 更多信息, php --ini 的命令行运行和它在 php 设置中指向的 ls 目录。还可以在运行成功的命令行上使用 -c 选项运行,而不是在我不包含 -c 时运行
j@j:/usr/local/lib$ php -ini | grep Configuration
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => (none)
Configuration
j@j:/usr/local/lib$ ls /usr/local/lib
php php.ini python2.5 site_ruby
j@j:/usr/local/lib$ php -c /usr/local/lib/php.ini /var/www/toolbelt/test.php
j@j:/usr/local/lib$ php /var/www/toolbelt/test.php

Fatal error: Class 'HttpRequest' not found in /var/www/toolbelt/test.php on line 7
jonathan@jonathan:/usr/local/lib$

编辑 编辑 编辑 编辑 编辑 编辑 编辑 更多信息。利用我测试的另一篇堆栈交换文章中显示的 strace 方法,查看是否有任何尝试打开在加载 php.ini 时所做的 ini 文件。没有
j@j:/usr/local/lib$ sudo strace  -e trace=open php -ini 2>&1 |grep  php.ini
Configuration File (php.ini) Path => /usr/local/lib
j@j:/usr/local/lib$ sudo strace -e trace=open php -ini 2>&1 |grep /usr/local/lib
Configuration File (php.ini) Path => /usr/local/lib
extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20060613 => /usr/local/lib/php/extensions/no-debug-non-zts-20060613
include_path => .:/usr/local/lib/php => .:/usr/local/lib/php

最佳答案

好的,希望这可以防止其他人将头撞到墙上几个小时。

我在干净构建我的 php.ini 时找到了自己的解决方案。事实证明,您可以更改 with-config-file-path选项并让它改变 phpinfo() 和 php -ini 输出中显示的路径。但是,如果您不清理构建,则实际使用该设置的地方不会被重建,并且会破坏您的构建。

自我注意:总是清理你的构建。我以前知道这一点,但被重建实际上改变了 php 告诉我目录的事实而被抛弃了。

关于PHP.ini 不会自动加载,即使它存在于配置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950941/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com