好吧,这可能只是我对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
Run Code Online (Sandbox Code Playgroud)
我已使用该命令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
Run Code Online (Sandbox Code Playgroud)
哪个失败,因为我需要我修复的c-client库apt-get install libc-client-dev
之后哪个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)
Run Code Online (Sandbox Code Playgroud)
编辑编辑编辑编辑通过使用-c命令在命令行上加载ini我可以运行我的文件并使用-m显示我的模块加载因此php.ini没有任何问题
编辑编辑编辑编辑编辑我已经告诉我,我的ini目录配置应该是一个找到php.ini文件的路径而不是文件本身.为此我尝试了设置/ etc,/ etc /,并让php设置默认目录,然后将我的ini文件移动到该目录中.都失败了:(
编辑编辑编辑编辑编辑我已经告诉我,我的ini目录配置应该是一个找到php.ini文件的路径而不是文件本身.为此我尝试了设置/ etc,/ etc /,并让php设置默认目录,然后将我的ini文件移动到该目录中.都失败了:(
编辑编辑编辑编辑编辑编辑更多信息,php --ini的命令行运行和它在php设置中指向的dir.也可以在运行成功的命令行上使用-c选项运行,而不是在不包含-c时运行
j@j:/usr/local/lib$ php -ini | grep Configuration
Configuration …
Run Code Online (Sandbox Code Playgroud)