php.ini 似乎被完全忽略了

php.ini 似乎被完全忽略了

我正在使用 Dreamhost VPS,所以我不知道这是否与此有关:

php.ini 文件中的条目include_path似乎被完全忽略了。默认情况下,有多个 php.ini 文件分散在各处,但在确定值时似乎没有使用它们include_path。包括声称正在读取的文件phpinfo()(据我所知,没有其他文件会覆盖它)。

我完全可以消除php.ini 文件,包含路径没有改变。当我运行 Web 请求时,它始终等于.:/usr/local/lib/php:/user/[username]/pear。它应该是.:/usr/local/lib/php:/usr/local/php5/lib/pear

/用户甚至不是一个目录在服务器上。它是 /home。并且根据我是从命令行(它正常工作)还是通过 Web 请求(它返回上述内容)调用它,phpinfo()打印出不同的内容。include_path

真奇怪有点是包含路径,phpinfo()有时随机改变当我刷新时它变为正确的值,但再次刷新会将其重置为旧的错误值。

所以呢?

答案1

phpinfo 函数中加载的配置文件应该会告诉您。更改后请确保重新启动 http 守护程序。

答案2

您是否正在运行 cPanel 或任何类型的控制面板?如果是,请忽略我要说的内容:

听起来您的机器上至少安装了两个 PHP,甚至更多。这种情况通常发生在有人通过包管理器安装 PHP,然后决定重新编译它以获取不同的版本,并且可能再次重新编译以获得不同的选项时。

首先,我建议您删除系统上能找到的所有 PHP 副本。确保在删除所有副本后尽最大努力进行清理(删除您找到的任何模块或 php.ini 文件)。一旦您的系统干净了,您需要确定需要哪个版本的 PHP,然后重新安装它。如果可能的话,您应该通过包管理器安装它(如果您使用的操作系统没有安装您需要的 PHP 版本,请尝试寻找其他来源。在 CentOS 上,IUS Repo 是一个很好的来源)。

请注意,删除 PHP 可能需要您删除 Apache,然后重新安装。这取决于一开始的安装方式。

为了防止此类事情发生,除非绝对必要,否则请尽量避免从源代码编译软件。如果你真的使用包管理器,它可以成为你最好的朋友。

相关内容