%20%D0%B8%20CLI%20%D0%BE%D1%82%D0%BB%D0%B8%D1%87%D0%B0%D0%B5%D1%82%D1%81%D1%8F%3F.png)
phpinfo()
Я понял, что между версией PHP, указанной в отчете, и php -v
(в CLI) имеется несоответствие .
phpinfo(): 5.5.24
php -v: 5.6.9
Я работаю на Mac OS X 10.10 (Yosemite) и установил библиотеку ( php-version
), чтобы попытаться управлять версиями PHP.
Он сообщает мне о трех разных версиях, установленных на моем ноутбуке:
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
решение1
Несколько различных проблем здесь скрываются под понятием путаницы версий PHP, поэтому постараюсь рассмотреть каждую из них как можно яснее. Сначала это:
phpinfo()
Я понял, что между версией PHP, указанной в отчете, и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.
Хотя технически все, что вы сделали, выглядит правильно, единственная причина, по которой это не работает, заключается в том, что LoadModule php5_module
в файлах конфигурации Apache есть другая директива, которая заменяет значение, которое вы устанавливаете в этой строке.
Я бы рекомендовал просмотреть httpd.conf
—который, как я предполагаю, находится здесь /etc/apache2/httpd.conf
— и посмотреть, возможно, есть действительно другой LoadModule php5_module
, который вы пропустили или не заметили при редактировании этого файла. Глядя на мой эквивалентный файл в Mac OS X 10.9.5, я вижу, что строка закомментирована — поскольку я не использую настройки Apache/PHP для Mac OS X — и выглядит примерно так:
#LoadModule php5_module libexec/apache2/libphp5.so
Конечно, в вашем случае это было бы некомментировано. Подробнее о настройке Apache и PHP для веб-разработкиможно найти на этом сайте.
Серьёзно рассмотрите возможность использования MAMP в качестве альтернативы особенностям Mac OS X Apache/PHP.
Теперь, несмотря на все вышесказанное, я не знаю, что вы пытаетесь сделать, но если вы занимаетесь веб-разработкой на системе Mac OS X, вам следует серьезно рассмотреть возможность использованияМАМПвместо того, чтобы взламывать основной веб-стек Mac OS X, чтобы все заработало.
Преимущество MAMP в том, что это чрезвычайно производственный уровень Mac OS X, эквивалент стека LAMP. И поскольку он ориентирован на реальную веб-разработку, у него все модули и конфигурации настроены именно так, как и должно быть.
Основная проблема Apache и PHP на Mac OS X заключается в том, что программное обеспечение обычно устарело, его сложно настраивать/подстраивать и управлять, а также отлаживать, когда происходят такие вещи. А что, если выйдет обновление Mac OS X, которое сотрет ваши тщательно настроенные настройки Apache и PHP? Вы вернетесь к исходной точке.
решение2
Я нашел решение своей проблемы. После редактирования /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
Спасибо также@Giacomo1968 за его объяснение.
решение3
В моей ситуации (сервер Windows с установленным Composer) Composer также жестко закодировал пути к различным расширениям PHP в php.ini (например, extension=C:/php7-3-27/ext/php_gd2.dll). Поэтому мне нужно было изменить и их. Это все равно не изменило версию, отображаемую в phpinfo(), вызываемом с веб-страницы Apache. Оказалось, что Composer также добавил мою старую папку версии PHP в переменные среды PATH, поэтому мне пришлось изменить ее, чтобы она указывала на мою новую папку PHP, прежде чем я увидел, что изменение версии вступило в силу.
Конечно, вам нужно убедиться, что ваш httpd.conf обновлен в соответствии с другими ответами в этой теме. Но если это не сработает, проверьте, какой путь к php.ini указан в phpinfo(), а также проверьте эти ^^ вещи.