尝试在我的系统上查找 PHP 的重复版本。它在哪里?

尝试在我的系统上查找 PHP 的重复版本。它在哪里?

我有地狱花时间尝试追踪我的 apache 正在使用哪个 php 二进制文件。

locate bin/php返回此列表

/usr/bin/php
/usr/bin/php-cgi
/usr/bin/php-config
/usr/bin/phpize
/usr/local/bin/php
/usr/local/bin/php-cgi
/usr/local/bin/php-config
/usr/local/bin/php-shell.sh
/usr/local/bin/phpize

让我们看看版本:

/usr/bin/php -v       shows 5.3.2
/usr/bin/local/php -v shows 5.3.2

关于什么which

[macek ~]$ which php
/usr/bin/php

问题

phpinfo();当由 apache 执行时显示5.2.11

我的系统上的这个 phantom 5.2.11 在哪里?

答案1

您是通过 CGI 使用 PHP 的吗?还是您在运行时将其作为 mod_php 构建到 Apache 中?如果您没有将 PHP 作为 CGI 程序运行,那么它在 shell 中的位置就无关紧要了。

答案2

检查并确保你的 apache 安装没有从两个不同的地方加载 mod_php。在许多现代 Linux 发行版中,Mod_php 包含在 下/etc/http/conf.d/php.conf,而不是(像以前一样)包含在常规/etc/httpd/conf/httpd.conf文件中。

我见过有人不小心让 apache 加载 php 两次,而自己却不知道这一点。如果你自己构建了 php 版本,并自己更新了 httpd.conf 文件,而没有检查以确保不是一个 php.conf 文件。

答案3

可以肯定的是,您可以看到 apache 中实际运行的内容。

我知道的两种方法:

lsof命令列出了打开的文件,您可以指定一个进程 ID,它将显示该进程打开的文件(包括共享库)。

一旦打开,共享库就会映射到内存中。在 Linux 上,您可以查看 /proc/pid/maps 文件以查看为您的进程映射的所有共享库。

相关内容