Я понял, что существует несоответствие между версией 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
apache-http-server
php
Сальваторе Дибенедетто
источник
источник
Ответы:
Несколько различных проблем здесь скрываются за концепцией путаницы версий PHP, поэтому постараемся рассмотреть каждую из них как можно более четко. Сначала это:
PHP CLI - это не то же самое, что модуль PHP Apache.
Как я объясняю в ответе на этот другой вопрос здесь , не паникуйте! Если вы беспокоитесь о том, какую версию PHP использует ваш сервер Apache,
phpinfo()
вы всегда должны обратить внимание на вывод . Модуль Apache PHP и двоичный файл командной строки PHP - это две разные вещи, которые не мешают друг другу.Просто обратите внимание на вывод,
phpinfo()
если вас беспокоит настройка правильной версии PHP-модуля в Apache.Тем не менее, у вас все еще есть проблемы с загрузкой правильного модуля PHP в Apache:
Убедитесь, что ваш сервер Apache загружает правильный модуль PHP.
Хотя то, что вы сделали технически, выглядит правильным, единственная причина, по которой я вижу, что это не работает, так или иначе, -
LoadModule php5_module
в конфигурационных файлах Apache есть другая директива, которая заменяет значение, которое вы устанавливаете в этой строке.Я бы порекомендовал посмотреть -
httpd.conf
что, как я полагаю, находится здесь,/etc/apache2/httpd.conf
- и посмотреть, возможно, есть еще один,LoadModule php5_module
который вы пропустили или не заметили при редактировании этого файла. Глядя на мой эквивалентный файл в Mac OS X 10.9.5, я вижу, что строка закомментирована - поскольку я не использую настройки Mac OS X Apache / PHP - и читает что-то вроде этого:Конечно, в вашем случае это будет без комментариев. Более подробную информацию о настройке 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? Вы вернулись на круги своя.
источник
Я нашел решение своей проблемы. После редактирования
/etc/apache2/httpd.conf
я перезапускал apache, используя:По какой-то причине с помощью этой команды Apache не будет
httpd.conf
загружать обновления и загружать старую конфигурацию.С помощью:
Произведите своего рода жесткий перезапуск всех служб, а также прочитайте обновления в файле конфигурации и, наконец, прочитайте новый путь для
php5_module
:Спасибо также @JakeGould за его объяснение .
источник
-k
флаг изapachectl
команд, поскольку, если вы проверите,apachectl -h
этот флаг / опция там не существует. Понятия не имею, откуда ты это взял. Кроме того, в то время как вы заявляете, что делаетеstop
иstart
проясняете ситуацию, странным является то, чтоrestart
в системах Linux это именно так. Если вы проверите скрипт, расположенный в/usr/sbin/apachectl
(это скрипт, так что используйте любой текстовый редактор для просмотра), он, кажется, тоже делает это. Может быть, в Mac OS XLaunchDaemons
Apache просто «странный» по сравнению со стандартным Linux? Во всяком случае, здорово, что вы решили это./usr/sbin/apachectl
(без команды) , и это четко указано, что[-k start|restart|graceful|graceful-stop|stop]
. Я так привык к тому, как Apache работает в системах Linux, теперь, кажется, я забыл о-k
флаге для использования сapachectl
командами. Итак, зная, что реальная проблема у вас в том, что вы пытались перезапустить эту команду,sudo apachectl restart
когда к ней должен был быть-k
добавлен такой флагsudo apachectl -k restart
.