PHP code is not rendered properly on web browser
I've just installed Apache with PHP-FPM based on the following tutorial
How to Setup Apache with PHP-FPM on Ubuntu 20.04
wolf@linux:~$ dpkg -l apache2 libapache2-mod-fcgid software-properties-common php7.4 php7.4-fpm
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=============================-===================-===================-===============================================================
ii apache2 2.4.29-1ubuntu4.14 amd64 Apache HTTP Server
ii libapache2-mod-fcgid 1:2.3.9-1 amd64 FastCGI interface module for Apache 2
ii php7.4 7.4.12-3+ubuntu18.0 all server-side, HTML-embedded scripting language (metapackage)
ii php7.4-fpm 7.4.12-3+ubuntu18.0 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary)
ii software-properties-common 0.96.24.32.14 all manage the repositories that you install software from (common)
wolf@linux:~$ Test PHP with phpinfo() function
wolf@linux:/var/www/html$ cat info.php
<?php phpinfo(); ?>
wolf@linux:/var/www/html$ The only issue right now is PHP file seems to be processed properly in CLI, but not via web browser.
wolf@linux:/var/www/html$ php info.php | head
phpinfo()
PHP Version => 7.4.12
System => Linux 4.15.0-122-generic #124-Ubuntu SMP Thu Oct 15 13:03:05 UTC 2020 x86_64
Build Date => Oct 31 2020 17:04:09
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /etc/php/7.4/cli
Loaded Configuration File => /etc/php/7.4/cli/php.ini
Scan this dir for additional .ini files => /etc/php/7.4/cli/conf.d
wolf@linux:/var/www/html$ Unfortunately, it's not working on web browser
php7.4-fpm service is already started
wolf@linux:~$ systemctl status php7.4-fpm
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-11-02 07:12:15 ; 1min 36s ago Docs: man:php-fpm7.4(8) Process: 739 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /e Main PID: 695 (php-fpm7.4) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 1129) CGroup: / ├─695 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf) ├─737 php-fpm: pool www └─738 php-fpm: pool www
Nov 02 07:12:14 linux systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Nov 02 07:12:15 linux systemd[1]: Started The PHP 7.4 FastCGI Process Manager.This is the only things appear on access.log
wolf@linux:~$ tail -F /var/log/apache2/access.log
127.0.0.1 - - [02/Nov/2020:07:23:50 ] "GET /info.php HTTP/1.1" 304 180 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"There is no new log at /var/log/apache2/error.log and /var/log/apache2/other_vhosts_access.log
What wrong in this case and what should I do to troubleshoot it?
2 Answers
For what you show the handler is not being executed, so it is displaying the PHP file as if it was a text file.
Did you create the virtual host entry?.
I checked the document you link and something is missing.
They create the config for the site on:
/etc/apache2/sites-available/000-default.conf
But a symbolic link to this file should be created in: /etc/apache2/sites-enabled/
Please do:
ls -al /etc/apache2/sites-available/
ls -al /etc/apache2/sites-enabled/
cat /etc/apache2/sites-available/000-default.confso I can review what's wrong.
Cheers, Carles
Apache also needs to be configured to support PHP-FPM (apache2 + php-fpm)
The Apache configuration file /etc/apache2/conf-available/php7.4-fpm.conf is created automatically after installing PHP-FPM.
If it's not there, you can also create this file manually.
/etc/apache2/conf-available/php7.4-fpm.conf
# Redirect to local php-fpm if mod_php is not available
<IfModule !mod_php7.c>
<IfModule proxy_fcgi_module> # Enable http authorization headers <IfModule setenvif_module> SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 </IfModule> <FilesMatch ".+\.ph(ar|p|tml)$"> SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost" # PHP version (php -v command) </FilesMatch> <FilesMatch ".+\.phps$"> # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Require all denied </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(ar|p|ps|tml)$"> Require all denied </FilesMatch>
</IfModule>
</IfModule>Then, activate the proxy_fcgi module:
sudo a2enmod proxy_fcgi
Also, activate the configuration file:
sudo a2enconf php7.4-fpm
Reference: