У меня есть чертовское время, пытающееся отследить, какой бинарный файл php использует мой apache.

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

Где этот фантом 5.2.11 в моей системе?

3 ответа3

2

Вы используете PHP через CGI? Или вы встроили его в Apache во время выполнения как mod_php? Если вы не используете PHP как CGI-программу, не имеет значения, где он находится в оболочке.

1

Проверьте и убедитесь, что ваша установка apache не загружает mod_php из двух разных мест. Во многих современных дистрибутивах linux Mod_php включен в /etc/http/conf.d/php.conf , а не (как обычно) в обычный /etc/httpd/conf/httpd.conf .

Я видел, как люди случайно говорили Apache, чтобы загрузить PHP дважды, не зная этого. Это особенно часто случается , если вы создаете свою собственную версию PHP, и обновлять httpd.conf файл самостоятельно, без проверки , чтобы убедиться , что это не php.conf файл.

0

Чтобы быть уверенным, вы можете увидеть, что на самом деле работает в вашем Apache.

Два способа, которые я знаю о:

Команда lsof список открытых файлов, и вы можете указать идентификатор процесса, и он покажет открытые файлы (включая общие библиотеки) для этого процесса.

После открытия общие библиотеки отображаются в памяти. В Linux вы можете посмотреть в файле /proc /pid /maps, чтобы увидеть все общие библиотеки, сопоставленные вашему процессу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .