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, поэтому я не уверен, что они надежны или нет.

UPDATE: 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 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, поэтому я не пытался примените рекомендуемое исправление.

Команда 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 ). Пакет должен включить себя и переключиться на apache2 prefork MPM, который поддерживает только 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, но он может пригодиться в специальных развертываниях.

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

Я также укусил этот вопрос по-другому:

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

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

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

 sudo a2dismod mpm_event 

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

 sudo a2enmod mpm_prefork 

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

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

 sudo service apache2 restart 

Теперь вам должно быть хорошо идти без проблем.