Обновление до 16.04. php7 не работает в браузере

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

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

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

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

69
задан 23 April 2016 в 02:10

7 ответов

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

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

sudo apt install php libapache2-mod-php

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


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

sudo apt install php7.0-mbstring

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

0
ответ дан 23 April 2016 в 02:10

Я получил эту проблему также.

Это помогло мне удалить весь 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
0
ответ дан 23 April 2016 в 12:10
  • 1
    Спасибо, я действительно находил ошибку в коде, но теперь I' m не позволенный сохранить его. Я пытался заменить его, но я получил " у Вас нет полномочий необходимыми, чтобы сохранить файл. Проверьте ввод местоположения правильно, и попробуйте снова " файл только для чтения, и я не могу изменить его даже tho I' m администратор моего собственного ПК – Isaiah Wells 12 September 2017 в 15:26

Для конфигурирования 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 (передающий по каналу через меньше включает Вам к легкой прокрутке вверх и вниз, 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 должен теперь быть правильно настроен.

40
ответ дан 23 April 2016 в 12:10
  • 1
    Если это отвечает на Ваш вопрос, примите ответ путем нажатия на галочку слева. – dessert 13 September 2017 в 00:24

Im мой случай не только php не работал, но и phpmyadmin также, мне действительно шаг за шагом нравилось это

sudo apt install php libapache2-mod-php
sudo apt install php7.0-mbstring
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
service apache2 restart

И затем к:

gksu gedit /etc/apache2/apache2.conf

В последней строке я действительно добавляю Include /etc/phpmyadmin/apache.conf

, Которые заключают сделку со всеми проблемами

0
ответ дан 23 April 2016 в 12:10
  • 1
    Вы редактировали файл как корень? с sudo nano ...? gksu gedit? Как Вы открывали файл? Можно сохранить его в корневом каталоге и затем sudo mv /home/your_user/spotify.list /etc/apt/sources.list.d/spotify.list – Panther 12 September 2017 в 15:29

https://Примечание wiki.archlinux.org/index.php/Apache_HTTP_Server

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
service apache2 restart

: Вышеупомянутое требуется, потому что libphp7.so включенный с php-apache не работает с mod_mpm_event, но будет только работать mod_mpm_prefork вместо этого. ( FS#39218)

Иначе Вы получите следующую ошибку:

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
AH00013: Pre-configuration failed
httpd.service: control process exited, code=exited status=1

Как альтернатива, можно использовать mod_proxy_fcgi (см. Использовать php-fpm и mod_proxy_fcgi ниже ).

0
ответ дан 23 April 2016 в 12:10
  • 1
    Не обязательно, просто легче отправить команды здесь, а не снимки экрана, и в общем Linux дает значимые сообщения об ошибках. Как только Вы учитесь читать сообщения и страницы справочника, Вы хороши для движения. Так же, как в Windows, графические инструменты иногда не дают как большую информацию. – Panther 12 September 2017 в 15:42

Я также мог выполнить сценарии PHP успешно из командной строки на Ubuntu 16.04, но не в любом браузере. В попытке решить проблему я произвел чистку своих существующих копий и php7.0 и apache2. После этого я переустановил обоих из командной строки включая, а также php библиотеки apache2. Разочарование следовало, когда я попытался выполнить "a2enmod php7.0", который сообщил мне, что php7.0 модуль не существовал несмотря на то, что еще раз я смог выполнить сценарии PHP из командной строки. Инстинкт втолкнут. Открываясь Синаптический, я обнаружил, что, когда я установил библиотеку apache2 php из командной строки, я установил только libapache2-mod-php7.0 и забыл также устанавливать "обертку", libapache2-mod-php, без которого первый не будет функционировать.

0
ответ дан 23 April 2016 в 12:10

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

   <?

вместо

   <?php

, Если включено short_open_tag (путем изменения 'Прочь' на 'На' в моем php.ini) и сброс апачский сервер (sudo service apache2 restart) и PHP, вытолканный назад живой.

0
ответ дан 23 April 2016 в 12:10
  • 1
    Вид большое спасибо сэр, я выяснил, что все должно быть сделано в терминале к " получите good" с Linux. Моей проблемой было решенное большое спасибо сэр. – Isaiah Wells 12 September 2017 в 15:40

Другие вопросы по тегам:

Похожие вопросы: