Обновитесь до 16.04. PHP7 не работает в браузере

Обновитесь до 16.04. PHP7 не работает в браузере

Я только что обновился с 14.10 до 16.04 и не уверен, как настроить PHP 7 в apache. Я изменил файл php7.0.conf, чтобы раскомментировать последние строки, перезапустил apache2, и никаких изменений.

Нужно ли мне менять настройки apache2, чтобы разрешить PHP?

PHP работает из командной строки, поэтому я уверен, что PHP установлен правильно.

Кроме того, я получаю сообщение об ошибке в phpadmin, сообщающее об отсутствии mbstring.

решение1

Как и прежде, вам необходимо установить PHP для Apache.

ИзРуководство сервера:

sudo apt install php libapache2-mod-php

Эта команда установит PHP и модуль PHP Apache 2. Просто настройте Apache, как и прежде ( sudo a2enmod php7.0я думаю, это включит модуль).


У вас mbstringаналогичная проблема — вам нужно установить это расширение:

sudo apt install php7.0-mbstring

Для других отсутствующих модулей придется установить аналогичные вещи.

решение2

Чтобы настроить php7 для работы на вашем сервере, вам необходимо выполнить некоторые настройки:

1. Убедитесь, что вы удалили все следыphp/php5

Откройте терминал Ctrl+ Alt+ Tи:

cd /etc/apache2/mods-enabled
ls -la

Вывод долженнетсодержат любой php5.confили php5.load, но если это так, выполните следующие действия:

# this is the proper way of disabling modules
sudo a2dismod php5

# run this only if the above command didn't remove the php5 sym-links
sudo rm php5.load
sudo rm php5.conf

Теперь вместо этого добавьте « php7.0.confи» php7.0.load:

# this is the proper way of enabling modules
sudo a2enmod php7.0

# run this only if the above command didn't create the php7.0 sym-links
sudo ln -s php7.0.conf ../mods-available/php7.0.conf
sudo ln -s php7.0.load ../mods-available/php7.0.load

Вывод ls -la php*должен выглядеть так:

lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.conf -> ../mods-available/php7.0.conf
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.load -> ../mods-available/php7.0.load

После того, как мы разобрались с модулями, мы переходим в /etc/apache2/conf-enabledдиректорию. Удалите все следы php/php5 здесь также с помощьюsudo rm <name>

Затем, если необходимо, сделайте следующее:

# the proper way of enabling configs
sudo a2enconf php7.0-cgi
sudo a2enconf php7.0-fpm

# do those commands only if the above didn't work out
sudo ln -s php7.0-cgi.conf ../conf-available/php7.0-cgi.conf
sudo ln -s php7.0-fpm.conf ../conf-available/php7.0-fpm.conf

Вывод ls -la php*должен выглядеть так:

lrwxrwxrwx 1 root root 33 Apr 21 17:00 php7.0-cgi.conf -> ../conf-available/php7.0-cgi.conf
lrwxrwxrwx 1 root root 33 Apr 21 17:01 php7.0-fpm.conf -> ../conf-available/php7.0-fpm.conf

2. Перезапуск Apache2

Перед перезапуском Apache обязательно очистите Apache, error.logа затем перезапустите:

sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

Теперь проверьте error.logвывод cat /var/log/apache2/error.log | less(проход через less позволяет легко прокручивать вверх и вниз, qвыход из вывода).

Если ваш error.logсодержит много (и я буквально имею в видукучаиз) некоторые MIBS not foundделают следующее:

sudo apt install libsnmp-dev
sudo net-snmp-config --snmpconfpath
sudo apt-get install snmp snmp-mibs-downloader
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

Проверьте еще раз, error.logтеперь он должен содержать только 3 строки:

[Sat Apr 23 01:39:07.504005 2016] [mpm_prefork:notice] [pid 1647] AH00169: caught SIGTERM, shutting down
[Sat Apr 23 01:39:08.685774 2016] [mpm_prefork:notice] [pid 9590] AH00163: Apache/2.4.18 (Ubuntu) mod_perl/2.0.9 Perl/v5.22.1 configured -- resuming normal operations
[Sat Apr 23 01:39:08.685938 2016] [core:notice] [pid 9590] AH00094: Command line: '/usr/sbin/apache2'

Теперь ваш Apache с php7.0 должен быть правильно настроен.

решение3

У меня тоже возникла эта проблема.

Мне помогло удаление всего PHP и переустановка php7.

Все, что было нужно, это:

sudo apt-get purge php*

php7 будет удален, после этого просто переустановить:

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0

решение4

Решение, которое я нашел для этой проблемы, — это настройка PHP.INI по умолчанию для short_open_tag. По умолчанию она установлена ​​на 'Off'. Мой PHP-код начинался с

   <?

вместо

   <?php

Если включить short_open_tag (изменив «Off» на «On» в моем php.ini) и перезагрузить сервер Apache ( sudo service apache2 restart), то PHP снова заработает.

Связанный контент