Nginx Showing Blank Php Pages

Better Stack Team
Updated on October 7, 2024

If Nginx is serving blank pages for PHP files, it generally indicates a problem with how PHP is being processed. This issue is often related to the configuration of PHP-FPM (FastCGI Process Manager) or issues in the PHP code itself. Here's a step-by-step guide to troubleshoot and resolve the issue:

1. Verify PHP-FPM is Installed and Running

Ensure that PHP-FPM is installed and running on your server.

Check PHP-FPM Service Status:

 
sudo systemctl status php-fpm

Explanation:

  • This command checks the status of the PHP-FPM service (for distributions like CentOS or RHEL). For Debian-based systems, it might be named php7.4-fpm or similar.

Start or Restart PHP-FPM:

 
sudo systemctl restart php-fpm

2. Check Nginx Configuration

Ensure that your Nginx configuration is correctly set up to handle PHP files.

Example Configuration for PHP with Nginx:

 
server {
    listen 80;
    server_name your-domain.com;
    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \\.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;  # Adjust PHP version and path if necessary
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\\.ht {
        deny all;
    }
}

Explanation:

  • include snippets/fastcgi-php.conf;: Includes common FastCGI configurations.
  • fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;: Adjust this path to match your PHP-FPM socket or TCP address.
  • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;: Ensures the correct path to the PHP script is passed to PHP-FPM.

3. Test PHP Processing

Create a simple PHP info file to test if PHP is being processed correctly.

Create PHP Info File:

 
sudo nano /var/www/html/info.php

Add the Following Content:

 
<?php
phpinfo();
?>

Access the File in Your Browser:

Navigate to http://your-domain.com/info.php.

Expected Result:

You should see a PHP information page. If the page is blank, PHP is not processing correctly.

4. Check PHP-FPM Logs

Look at the PHP-FPM logs for errors that might explain why PHP pages are blank.

Location of Logs:

  • Debian/Ubuntu: /var/log/php7.4-fpm.log
  • CentOS/RHEL: /var/log/php-fpm/www-error.log

Command to View Logs:

 
sudo tail -f /var/log/php7.4-fpm.log

Explanation:

  • This command will show recent log entries. Look for errors related to PHP-FPM.

5. Check Nginx Logs

Nginx logs might also provide clues about what is going wrong.

View Nginx Error Log:

 
sudo tail -f /var/log/nginx/error.log

6. Validate PHP Configuration

Check if your PHP configuration files are correctly set up and that there are no syntax errors in PHP scripts.

Command to Check PHP Configuration:

 
php -l /path/to/your/script.php

Explanation:

  • php -l: This command checks the syntax of a PHP file.

7. Adjust PHP Configuration Settings

Ensure that PHP settings in php.ini are configured correctly. For example, check if display_errors is enabled for development purposes:

Find PHP Configuration File:

 
php --ini

Edit PHP Configuration File:

 
sudo nano /etc/php/7.4/fpm/php.ini

Enable Error Display (Development Only):

 
display_errors = On
error_reporting = E_ALL

Restart PHP-FPM after Changes:

 
sudo systemctl restart php-fpm

8. Permissions and Ownership

Ensure that Nginx and PHP-FPM have the correct permissions to access your PHP files.

Set Correct Ownership and Permissions:

 
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \\;
sudo find /var/www/html -type f -exec chmod 644 {} \\;

Explanation:

  • chown -R www-data:www-data: Sets the correct owner and group for Nginx and PHP-FPM to access files.
  • chmod 755 and chmod 644: Sets appropriate permissions for directories and files.

Summary

To resolve the issue of Nginx serving blank PHP pages:

  1. Verify PHP-FPM is Running: Ensure PHP-FPM is active and properly configured.
  2. Check Nginx Configuration: Ensure location blocks are correctly set up for PHP processing.
  3. Test PHP Processing: Use a phpinfo() script to check PHP functionality.
  4. Check Logs: Review PHP-FPM and Nginx logs for errors.
  5. Validate PHP Configuration: Check PHP syntax and configuration settings.
  6. Adjust Settings: Ensure PHP error reporting is enabled and permissions are correct.
  7. Restart Services: Restart Nginx and PHP-FPM after making changes.

By following these steps, you should be able to diagnose and fix issues with Nginx serving blank PHP pages.

Got an article suggestion? Let us know
Licensed under CC-BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Make your mark

Join the writer's program

Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them.

Write for us
Writer of the month
Marin Bezhanov
Marin is a software engineer and architect with a broad range of experience working...
Build on top of Better Stack

Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email.

community@betterstack.com

or submit a pull request and help us build better products for everyone.

See the full list of amazing projects on github