MacOS HighSierra - Как заставить Apache использовать PHP 7.2.9 вместо PHP 7.1.16 - PullRequest
0 голосов
/ 24 августа 2018

В Терминале, если я наберу «php -v», я получу: - PHP 7.2.9 (cli) (построено: 22 августа 2018 г. 02:58:50) (NTS) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies с Zend OPcache v7.2.9, Copyright (c) 1999-2018, Zend Technologies php -v в терминале -

В Safari, если я наберу «localhost / phpinfo.php» (файл, содержащий строку:), я получу: - Версия PHP 7.1.16 phpinfo () вывод в Safari -

phpMyAdmin говорит мне: Веб-сервер

• Apache/2.4.33 (Unix) PHP/7.1.16
• Database client version: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $
• PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
• PHP version: 7.1.16

Информация о WebServer в phpMyAdmin -

Как я могу сказать Apache использовать 7.2.9 вместо 7.1.16?

Моя цель - избавиться от этой ошибки при программировании на PHP (да, я новичок): Фатальная ошибка: Uncaught Ошибка: вызов неопределенной функции imagettfbbox () в /Users/David/Sites/graphic_example.php:7 Трассировка стека: # 0 {main} добавляется в /Users/David/Sites/graphic_example.php в строке 7

-

Можете ли вы помочь мне с подробной процедурой?

Большое спасибо за вашу помощь !!

1 Ответ

0 голосов
/ 09 июля 2019

Сначала подтвердите путь, по которому был установлен PHP7.2. В большинстве случаев это должно быть /usr/local/opt/php@7.2, но могут быть некоторые различия, если вы не уверены, проверьте файл. * Shrc (* = ваша оболочка, например .zshrc, .bashrc), он должен иметь строка типа PATH="/usr/local/opt/php@7.2/bin.

Во-вторых, скопируйте эту строку (в моем случае): usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so, в соответствии с тем, что я упомянул на первом шаге, вам может потребоваться изменить что-то в этой строке, чтобы соответствовать ситуации (например, другое имя пути ) вы встречались.

В-третьих, отредактируйте ваш конфигурационный файл Apache: sudo vi /etc/apache2/httpd.conf (Кроме того, здесь могут быть некоторые различия, но их не должно быть слишком много). Затем найдите строку: LoadModule php7_module libexec/apache2/libphp7.so. Это оригинальный модуль PHP7, который является 7.1.XX. Нам нужно закомментировать это, добавив # в начале этой строки, чтобы оно стало #LoadModule php7_module libexec/apache2/libphp7.so.

Наконец, мы добавим новую строку LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so, путь должен идти со второго шага.

После того, как все сделано, мы можем сначала запустить sudo apachectl configtest, чтобы убедиться, что все в порядке или нет. Затем запустите sudo apachectl restart, phpinfo(); должен отобразить правильную версию PHP, которую вы назначили.

Однако это не может успешно решить вашу проблему. Есть еще некоторые проблемы, которые необходимо решить: необходимо настроить конфигурации PHP, установить и запустить PHP-FHM.

Таким образом, вы можете легко сравнить два php.ini файла (/etc/php.ini и /usr/local/etc/php/7.2/php.ini) через редактор, который имеет функцию сравнения, чтобы убедиться, что новый файл уже установлен в «нормальное» состояние.

Другой способ - установить PHP-FPM, поскольку во встроенном PHP уже есть функция PHP-FPM, это означает, что более новая также должна включить эту функцию, в противном случае все может пойти не по порядку. Нам нужно снова изменить конфигурационный файл Apache, комментируя / раскомментируя или добавляя следующие строки, вы должны заметить, что php7_module снова закомментирован, и это нормальная практика.

#LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule rewrite_module libexec/mod_rewrite.so
Include /private/etc/apache2/extra/httpd-vhosts.conf
<FilesMatch .php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

После внесения изменений не забудьте перезапустить сервер Apache. Затем выполните эти команды или только последнюю и перезапустите ваш Mac, тогда все должно быть как обычно:

sudo /usr/local/opt/php@7.2/sbin/php-fpm --fpm-config /usr/local/etc/php/7.2/php-fpm.conf
sudo cp /usr/local/opt/php@7.2/homebrew.mxcl.php@7.2.plist /Library/LaunchDaemons/homebrew.mxcl.php@7.2.plist
...