我有地狱花时间尝试追踪我的 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 文件以查看为您的进程映射的所有共享库。