PHP, представленный как текст после обновления Ubuntu 16.04

Apache представляет файлы PHP как текст после обновления Ubuntu 16.04.

Apache установлен и выполнение. PHP7 работает. Когда я выполняю следующую команду, я получаю корректный вывод:

php -r 'echo "\n\nYour PHP installation is working fine.\n\n\n";'

Однако, когда я получаю доступ к http://localhost/info.php или любому другому php файлу, я получаю содержание файла вместо страницы.

Большая часть справки онлайн для более старых версий и Ubuntu и PHP, таким образом, я не уверен, что они надежны или нет.

ОБНОВЛЕНИЕ: Apache не запустится после установки libapache2-mod-php7.0 и включение php7.0. Посмотрите вывод:

douglas@douglas-acer:~$ sudo service apache2 restart
douglas@douglas-acer:~$ sudo apt-get install libapache2-mod-php
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  libapache2-mod-php
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/2.960 B of archives.
After this operation, 15,4 kB of additional disk space will be used.
Selecting previously unselected package libapache2-mod-php.
(Reading database ... 263897 files and directories currently installed.)
Preparing to unpack .../libapache2-mod-php_1%3a7.0+35ubuntu6_all.deb ...
Unpacking libapache2-mod-php (1:7.0+35ubuntu6) ...
Setting up libapache2-mod-php (1:7.0+35ubuntu6) ...
douglas@douglas-acer:~$ sudo service apache2 restart
douglas@douglas-acer:~$ sudo a2enmod php7.0
Considering conflict php5 for php7.0:
Enabling module php7.0.
To activate the new configuration, you need to run:
  service apache2 restart
douglas@douglas-acer:~$ sudo service apache2 restart
Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
douglas@douglas-acer:~$ sudo apt-get purge php5
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'php5' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Вывод systemctl status apache2.service :

● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: failed (Result: exit-code) since Dom 2016-04-24 08:21:35 BRT; 14s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 9216 ExecStart=/etc/init.d/apache2 start (code=exited, status=1/FAILURE)

Abr 24 08:21:35 douglas-acer apache2[9216]:  * The apache2 configtest failed.
Abr 24 08:21:35 douglas-acer apache2[9216]: Output of config test was:
Abr 24 08:21:35 douglas-acer apache2[9216]: [Sun Apr 24 08:21:35.235583 2016] [:crit] [pid 9226:tid 140666367190912] Apache is running a threade
Abr 24 08:21:35 douglas-acer apache2[9216]: AH00013: Pre-configuration failed
Abr 24 08:21:35 douglas-acer apache2[9216]: Action 'configtest' failed.
Abr 24 08:21:35 douglas-acer apache2[9216]: The Apache error log may have more information.
Abr 24 08:21:35 douglas-acer systemd[1]: apache2.service: Control process exited, code=exited status=1
Abr 24 08:21:35 douglas-acer systemd[1]: Failed to start LSB: Apache2 web server.
Abr 24 08:21:35 douglas-acer systemd[1]: apache2.service: Unit entered failed state.
Abr 24 08:21:35 douglas-acer systemd[1]: apache2.service: Failed with result 'exit-code'.

Вывод journalctl -xe

-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit apache2.service has finished shutting down.
Abr 24 08:37:59 douglas-acer systemd[1]: Starting LSB: Apache2 web server...
-- Subject: Unit apache2.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit apache2.service has begun starting up.
Abr 24 08:37:59 douglas-acer apache2[10261]:  * Starting Apache httpd web server apache2
Abr 24 08:37:59 douglas-acer apache2[10261]:  *
Abr 24 08:37:59 douglas-acer apache2[10261]:  * The apache2 configtest failed.
Abr 24 08:37:59 douglas-acer apache2[10261]: Output of config test was:
Abr 24 08:37:59 douglas-acer apache2[10261]: [Sun Apr 24 08:37:59.748900 2016] [:crit] [pid 10271:tid 139911432607616] Apache is running a threa
Abr 24 08:37:59 douglas-acer apache2[10261]: AH00013: Pre-configuration failed
Abr 24 08:37:59 douglas-acer apache2[10261]: Action 'configtest' failed.
Abr 24 08:37:59 douglas-acer apache2[10261]: The Apache error log may have more information.
Abr 24 08:37:59 douglas-acer systemd[1]: apache2.service: Control process exited, code=exited status=1
Abr 24 08:37:59 douglas-acer systemd[1]: Failed to start LSB: Apache2 web server.
-- Subject: Unit apache2.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit apache2.service has failed.
-- 
-- The result is failed.
Abr 24 08:37:59 douglas-acer systemd[1]: apache2.service: Unit entered failed state.
Abr 24 08:37:59 douglas-acer systemd[1]: apache2.service: Failed with result 'exit-code'.
Abr 24 08:37:59 douglas-acer sudo[10258]: pam_unix(sudo:session): session closed for user root
Abr 24 08:38:02 douglas-acer sudo[10276]:  douglas : TTY=pts/18 ; PWD=/home/douglas ; USER=root ; COMMAND=/bin/journalctl -xe
Abr 24 08:38:02 douglas-acer sudo[10276]: pam_unix(sudo:session): session opened for user root by (uid=0)
Abr 24 08:38:38 douglas-acer sudo[10276]: pam_unix(sudo:session): session closed for user root
Abr 24 08:39:01 douglas-acer CRON[10297]: pam_unix(cron:session): session opened for user root by (uid=0)
Abr 24 08:39:01 douglas-acer CRON[10299]: (root) CMD (  [ -x /usr/lib/php5/sessionclean ] && /usr/lib/php5/sessionclean)
Abr 24 08:39:01 douglas-acer CRON[10297]: pam_unix(cron:session): session closed for user root
Abr 24 08:39:01 douglas-acer CRON[10298]: pam_unix(cron:session): session opened for user root by (uid=0)
Abr 24 08:39:01 douglas-acer CRON[10300]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean)
Abr 24 08:39:02 douglas-acer CRON[10298]: pam_unix(cron:session): session closed for user root
Abr 24 08:39:51 douglas-acer sudo[10122]: pam_unix(sudo:session): session closed for user root
Abr 24 08:39:53 douglas-acer sudo[10368]:  douglas : TTY=pts/5 ; PWD=/home/douglas ; USER=root ; COMMAND=/bin/journalctl -xe
Abr 24 08:39:53 douglas-acer sudo[10368]: pam_unix(sudo:session): session opened for user root by (uid=0) 

Относительно ошибки Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP Я действительно находил некоторую справку в https://wiki.archlinux.org/index.php/Apache_HTTP_Server относительно этой проблемы, однако пути к файлам не соответствовали тем в Ubuntu, таким образом, я не пытался применить рекомендуемую фиксацию.

20
задан 24 April 2016 в 14:56

4 ответа

Команда php предоставляется пакетом php7.0-cli в Ubuntu 16.04. Запуск CLI ортогонален конфигурации веб-сервера.

Вам необходимо установить и настроить один из веб-SAPI - apache2, fpm или cgi. Самый простой - установить apache2 SAPI.

  1. Чтобы установить apache2 SAPI, запустите apt-get install libapache2-mod-php (это приведет к установке версии PHP по умолчанию, в настоящее время libapache2-mod- php7.0 ). Пакет должен включиться и переключиться на MPM prefork apache2, который поддерживается только MPM. Если нет, попробуйте запустить a2enmod php7.0 и поищите ошибки. Установка должна переключиться с событийного MPM на предварительный MPM автоматически, но если этого не произойдет, вы можете переключить его вручную, выполнив sudo a2dismod mpm_event , а затем sudo a2enmod mpm_prefork .

  2. Чтобы установить FPM SAPI, запустите apt-get install php-fpm , а затем включите FPM, запустив a2enconf php7.0-fpm . FPM SAPI более безопасен, но его сложнее правильно настроить.

  3. Чтобы установить CGI SAPI, запустите apt-get install php-cgi , а затем включите CGI, запустив a2enconf php7.0-cgi . Учтите, что CGI не рекомендуется для запуска PHP, но он может пригодиться в особых случаях.

27
ответ дан 25 April 2016 в 00:56
  • 1
    Нечетный. It' s в do-release-upgrade --help. Вероятно, стоящий регистрации отчет об ошибках. – muru 16 October 2018 в 23:04

Я снова запустил свой, установив libapache2-mod-php7.0. Надеюсь, это поможет.

1
ответ дан 25 April 2016 в 00:56

Я тоже столкнулся с этой проблемой по-другому:

По умолчанию скрипты PHP не запускаются в пользовательских каталогах. Поэтому, если ваш сервер поддерживает public_html в домашней папке пользователей и вы хотите разрешить пользователям запускать на нем php, вам следует удалить часть в php7.0.conf , которая его отключает.

0
ответ дан 25 April 2016 в 00:56
  • 1
    Как студент университета, у меня нет способа считать дисковод. Ни одно из устройств, которые я имею со мной в Университете, не имеет слот накопителя. Это не необычный сценарий - значительная пропорция студентов использует только ноутбуки. – Tim 11 September 2017 в 22:18

В последней версии Apache 2.0 для Ubuntu 16.04.2 я обнаружил, что Apache предварительно настроен с включенными потоками, а PHP 7 по умолчанию - нет.Если PHP не скомпилирован с потокобезопасностью, вам нужно будет переключиться на предварительную версию MPM, которая не использует потоки.

Для этого сначала отключите:

sudo a2dismod mpm_event 

Затем включите:

sudo a2enmod mpm_prefork 

Вы должны сделать это в правильный порядок, так как они являются взаимоисключающими.

Затем перезапустите Apache:

sudo service apache2 restart

Теперь все должно быть в порядке.

0
ответ дан 25 April 2016 в 00:56
  • 1
    @Mehrdad, По моему мнению, вопрос на теме, потому что, как наименьшее количество насколько я понимаю, цель состоит в том, чтобы подготовить носитель в Ubuntu. У людей часто есть вопросы о том, какая принадлежность файла и полномочия в Ubuntu могут и не могут сделать. Полномочия стиля Unix, как часто (справедливо) говорят, среди преимуществ Ubuntu и других систем GNU/Linux, но когда-то люди надеются/думают, что полномочия могут решить проблемы, которые действительно могут только быть решены на другом уровне. Если мы действительно закрывали его, я подозреваю we' d просто получают больше вопросов как он, спрошенный другими пользователями Ubuntu, которые хотят к устройствам управления, которые они распределяют. – Eliah Kagan 12 September 2017 в 11:00

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

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