25

Я понял, что существует несоответствие между версией PHP, сообщенной phpinfo() и php -v (в CLI).

phpinfo():  5.5.24
php -v: 5.6.9

Я работаю на Mac OS X 10.10 (Yosemite) и установил библиотеку (php-version), чтобы попытаться управлять версиями PHP.

Он сообщает мне 3 разных версий, установленных на моем ноутбуке:

  5.4.41
  5.5.25
* 5.6.9

Я хотел бы установить одну и ту же версию PHP в Apache и CLI.

Как я могу сказать Apache, какую версию PHP использовать?

Я попытался написать эту строку в моем httpd.conf:

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

Затем:

sudo apachectl restart

Но все это не решает проблему ... В моей информации PHP у меня все еще есть: 5.5.24

2 ответа2

13

Несколько различных проблем здесь скрываются за концепцией путаницы версий PHP, поэтому постараемся рассмотреть каждую из них как можно более четко. Сначала это:

Я понял, что существует несоответствие между версией PHP, сообщенной phpinfo() и php -v (в CLI).

phpinfo():  5.5.24
php -v: 5.6.9

PHP CLI отличается от PHP-модуля Apache.

Как я объясняю в ответе на этот другой вопрос здесь, не паникуйте! Если вы обеспокоены тем, какую версию PHP использует ваш сервер Apache, вывод phpinfo() всегда является тем, на что вы должны обратить внимание. Модуль Apache PHP и двоичный файл командной строки PHP - это две разные вещи, которые не мешают друг другу.

Просто обратите внимание на вывод phpinfo() если вас интересует установка правильной версии PHP-модуля в Apache.

Тем не менее, у вас все еще есть проблемы с загрузкой правильного модуля PHP в Apache:

Я попытался написать эту строку в моем httpd.conf:

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

Убедитесь, что ваш сервер Apache загружает правильный модуль PHP.

Хотя то, что вы сделали технически, выглядит правильным, единственная причина, по которой я вижу, что это не работает, так это то, что в конфигурационных файлах Apache есть другая директива LoadModule php5_module которая заменяет значение, которое вы устанавливаете в этой строке.

Я бы порекомендовал просмотреть httpd.conf который, как я полагаю, находится здесь /etc/apache2/httpd.conf и посмотреть, не существует ли действительно другой LoadModule php5_module который вы пропустили или не заметили при редактировании этого файла. Глядя на мой эквивалентный файл в Mac OS X 10.9.5, я вижу, что строка закомментирована - поскольку я не использую настройки Macache X Apache/PHP - и читает что-то вроде этого:

#LoadModule php5_module libexec/apache2/libphp5.so

Конечно, в вашем случае это будет без комментариев. Более подробную информацию о настройке Apache и PHP для веб-разработки можно найти на этом сайте.

Серьезно подумайте об использовании MAMP в качестве альтернативы Mac OS X Apache/PHP.

Теперь, несмотря на все сказанное, я не знаю, что вы пытаетесь сделать, но если вы занимаетесь веб-разработкой в системе Mac OS X, вам следует серьезно подумать об использовании MAMP вместо взлома основного веб-стека Mac OS X для получения информации. Бег.

Преимущество MAMP в том, что это Mac OS X, чрезвычайно производительный уровень, эквивалентный стеку LAMP. А так как он ориентирован на реальную веб-разработку, он имеет все модули и конфигурации, настроенные так, как нужно.

Основная проблема с Apache и PHP в Mac OS X состоит в том, что программное обеспечение обычно устарело, боль в настройке / настройке и управлении, а также в головной боли при отладке, когда происходят подобные вещи. А что, если появится обновление для Mac OS X, которое уничтожит ваши тщательно настроенные настройки Apache и PHP? Вы вернулись на круги своя.

3

Я нашел решение своей проблемы. После редактирования /etc/apache2/httpd.conf я использовал для перезапуска apache, используя:

sudo apachectl restart

По какой-то причине с помощью этой команды Apache не будет загружать обновления в httpd.conf и загружать старую конфигурацию.

С помощью:

sudo apachectl -k stop
sudo apachectl -k start

Произведите своего рода жесткий перезапуск всех служб, а также прочитайте обновления в файле конфигурации и, наконец, прочитайте новый путь для php5_module:

/usr/local/opt/php56/libexec/apache2/libphp5.so

Спасибо также @JakeGould за его объяснение.

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