我正在Dreamhost VPS上工作,所以我不知道这是否与此有关:
php.ini文件中的include_path条目似乎完全被忽略。 默认情况下,有几个php.ini文件分散在一起,但是在确定include_path值时似乎没有一个文件被使用。 包括phpinfo()表示正在读取的文件(并且据我所知,没有其他文件覆盖它)。
我可以完全删除 php.ini文件,并且包含path不会更改。 当我运行一个web请求时,它总是等于.:/usr/local/lib/php:/user/[username]/pear 。 它应该是.:/usr/local/lib/php:/usr/local/php5/lib/pear 。
/用户甚至不是服务器上的目录 。 这是/家。 和phpinfo()打印出不同的include_path取决于我是否从命令行(它工作正常)或通过Web请求(它返回上述)调用它。
真正奇怪的是,当我刷新为正确的值时, phpinfo()所示的包含path有时会随机更改 ,但再次刷新会将其重置为旧的错误值。
所以呢?
在phpinfo函数加载的configuration文件应该告诉你。 确保在更改后重新启动http守护程序。
你正在运行的cPanel或任何types的控制面板? 如果是的话,不pipe我要说什么:
这听起来像你的机器上至less有两个,可能更多的PHP安装。 当有人通过软件包pipe理器安装PHP时,通常会发生这种情况,然后决定重新编译它以获得不同的版本,并可能会重新编译一个不同的选项。
首先,我build议您删除您可以在系统上find的每一个PHP副本。 确保你尽全力清理完毕(删除你find的任何模块或php.ini文件)。 一旦你有一个干净的系统,你需要决定你需要什么版本的PHP,并重新安装它。 如果可能的话,你应该通过你的软件包pipe理器进行安装(如果你使用的操作系统没有PHP的版本,你需要安装它,试着找一个备用的源代码在CentOS上,IUS Repo是一个好源)。
请注意,删除PHP可能需要您删除Apache,并重新安装它。 这取决于如何安装所有东西。
为防止发生这种情况,请尽量避免从源代码编译软件,除非绝对必要。 如果你真的使用它,你的包pipe理器可以成为你最好的朋友。