Я пытаюсь заставить PHP7.2 работать на локальном хосте, но phpinfo() продолжает говорить, что 7.1.19 на месте, а ~php -v говорит мне, что PHP7.2.18 на месте.
Я запускаю ~php -v, он говорит:
PHP 7.2.18 (cli) (построено: 2 мая 2019 г., 13:03:01) ( NTS ) Copyright (c) 1997–2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998–2018 Zend Technologies с Zend OPcache v7.2.18, Copyright (c) 1999-2018, Zend Technologies
~эхо $PATH
/usr/local/opt/php@7.2/sbin:/usr/local/opt/php@7.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/ Приложения/VMware Fusion.app/Contents/Public:/opt/X11/bin
Я установил PHP7.2 через brew в
➜ php@7.2 пароль
/usr/local/opt/php@7.2
Я ожидаю получить на локальном хосте PHP 7.2.18.
ОБНОВЛЯТЬ
Следуйте этим инструкциям по ссылке, упомянутой @miken32 ( Как использовать установленный php brew? )
Отредактировал httpd.conf в папке /etc/apache2
#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
Если я раскомментирую первую строку и прокомментирую вторую строку, я смогу запустить phpinfo() с локального хоста, однако он говорит, что это PHP 7.1.19, а php -v
говорит 7.2.18.
Если я прокомментирую первую строку и раскомментирую вторую строку, localhost не запустится и php -v
выдаст 7.2.18.
Я также выполнил эти шаги, но тоже не повезло.
$ brew update php // get the latest homebrew php packages
$ brew install php@7.2
$ brew link php@7.2 // create an alias to this keg-only version; see comments output during installation
$ echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile // add the alias to your path; see comments output during installation
$ source ~/.bash_profile // reload .bash_profile to use the new settings immediately
$ sudo apachectl restart
Также пробовал заваривать, link php71 --force
но это тоже не помогло.
Так что кажется, что веб-сервер не запускается, когда я переключаю строки httpd.conf
Какие шаги я могу предпринять, чтобы запустить 7.2.18?
ОБНОВЛЕНИЕ 2
➜ apache2 sudo apachectl -t
httpd: синтаксическая ошибка в строке 178 файла /private/etc/apache2/httpd.conf: невозможно загрузить /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so на сервер: dlopen(/usr/local /opt/php@7.2/lib/httpd/modules/libphp7.so, 10): не найдено подходящего образа. Нашел:\n\t/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so: подпись кода в (/usr/local/opt/php@7.2/lib/httpd/modules/libphp7 .so) недействителен для использования в процессе с использованием проверки библиотеки: сопоставленный файл не имеет cdhash, полностью неподписан? Код должен быть по крайней мере специально подписан.\n\t/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so: stat() не удалось с errno=22
Строка 178 говорит:
Модуль загрузки php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
Придется разобраться. Где-то на SO в более раннем посте было сделано предложение, есть ли какие-либо «странные» символы, которые могут вызвать ошибку. Проверил, и единственный странный — это «@». Однако это установка Brew из коробки.
Вы пытаетесь использовать модуль PHP от HomeBrew с веб-сервером Apache, предоставленным Apple. Это неподдерживаемая конфигурация в Мохаве.
Это не работает, потому что macOS пытается проверить, правильно ли подписано ваше программное обеспечение (т. е. не подделано) — и не проходит эту проверку после того, как вы изменили, какие двоичные файлы будут загружаться. Это можно исправить, отключив SIP (системный Integrity Protection) - но это действительно плохая идея, так как это отключит защиту и в других ваших программах.
Правильный способ продолжить — прекратить использование встроенного веб-сервера Apache и вместо этого использовать другой веб-сервер. Самый простой переход — просто использовать вместо этого Apache, предоставляемый HomeBrew.
Вы можете сделать это, сначала установив Apache из HomeBrew:
brew install httpd
Затем запретите macOS запускать предоставленный Apple Apache при загрузке:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
Убедитесь, что новая строка модуля php, которую вы вставили, теперь не закомментирована, а старая — т.е. сделайте так:
#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
Затем запустите новую установку веб-сервера Apache:
brew services restart httpd
В зависимости от ваших настроек вы сможете подключиться с помощью браузера к localhost:80 или localhost:8080 для просмотра вашего сайта.
без холма