File Not Found when running PHP with Nginx

后端 未结 15 1935
后悔当初
后悔当初 2020-12-04 13:59

Recently I installed the latest version of Nginx and looks like I\'m having hard time running PHP with it.

Here is the configuration file I\'m using for the domain:<

相关标签:
15条回答
  • 2020-12-04 14:31

    In my case the PHP-script itself returned 404 code. Had nothing to do with nginx.

    0 讨论(0)
  • 2020-12-04 14:31

    For me, problem was Typo in location path.

    Maybe first thing to check out for this kind of problem

    Is path to project.

    0 讨论(0)
  • 2020-12-04 14:32

    In my case, it was because the permissions on the root web directory were not set correctly. To do this, you need to be in the parent folder when you run this in terminal:

    sudo chmod -R 755 htmlfoldername
    

    This will chmod all files in your html folder, which is not recommended for production for security reasons, but should let you see the files in that folder, to be sure that isn't the issue while troubleshooting.

    0 讨论(0)
  • 2020-12-04 14:33

    try this command

    sudo chmod 755 -R htdocs/
    
    0 讨论(0)
  • 2020-12-04 14:36

    I had been having the same issues, And during my tests, I have faced both problems:

    1º: "File not found"

    and

    2º: 404 Error page

    And I found out that, in my case:

    I had to mount volumes for my public folders both on the Nginx volumes and the PHP volumes.

    If it's mounted in Nginx and is not mounted in PHP, it will give: "File not found"

    Examples (Will show "File not found error"):

    
    services:
      php-fpm:
        build:
          context: ./docker/php-fpm
      nginx:
        build:
          context: ./docker/nginx
        volumes:
            #Nginx Global Configurations
          - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
          - ./docker/nginx/conf.d/:/etc/nginx/conf.d
    
            #Nginx Configurations for you Sites:
    
            # - Nginx Server block
          - ./sites/example.com/site.conf:/etc/nginx/sites-available/example.com.conf
            # - Copy Public Folder:
          - ./sites/example.com/root/public/:/var/www/example.com/public
        ports:
          - "80:80"
          - "443:443"
        depends_on:
          - php-fpm
        restart: always
    
    

    If it's mounted in PHP and is not mounted in Nginx, it will give a 404 Page Not Found error.

    Example (Will throw 404 Page Not Found Error):

    version: '3'
    
    services:
      php-fpm:
        build:
          context: ./docker/php-fpm
        volumes:
          - ./sites/example.com/root/public/:/var/www/example.com/public
      nginx:
        build:
          context: ./docker/nginx
        volumes:
            #Nginx Global Configurations
          - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
          - ./docker/nginx/conf.d/:/etc/nginx/conf.d
    
            #Nginx Configurations for you Sites:
    
            # - Nginx Server block
          - ./sites/example.com/site.conf:/etc/nginx/sites-available/example.com.conf
        ports:
          - "80:80"
          - "443:443"
        depends_on:
          - php-fpm
        restart: always
    
    

    And this would work just fine (mounting on both sides) (Assuming everything else is well configured and you're facing the same problem as me):

    version: '3'
    
    services:
      php-fpm:
        build:
          context: ./docker/php-fpm
        volumes:
          # Mount PHP for Public Folder
          - ./sites/example.com/root/public/:/var/www/example.com/public
      nginx:
        build:
          context: ./docker/nginx
        volumes:
            #Nginx Global Configurations
          - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
          - ./docker/nginx/conf.d/:/etc/nginx/conf.d
    
            #Nginx Configurations for you Sites:
    
            # - Nginx Server block
          - ./sites/example.com/site.conf:/etc/nginx/sites-available/example.com.conf
            # - Copy Public Folder:
          - ./sites/example.com/root/public/:/var/www/example.com/public
        ports:
          - "80:80"
          - "443:443"
        depends_on:
          - php-fpm
        restart: always
    

    Also here's a Full working example project using Nginx/Php, for serving multiple sites: https://github.com/Pablo-Camara/simple-multi-site-docker-compose-nginx-alpine-php-fpm-alpine-https-ssl-certificates

    I hope this helps someone, And if anyone knows more about this please let me know, Thanks!

    0 讨论(0)
  • 2020-12-04 14:36

    I just spent like 40 minutes trying to debug a non-working /status with:

    $ SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php5-fpm.sock
    

    It just produced "File not found" error, while the actual scripts (that are found on the filesystem) worked just fine.

    Turned out, I had a couple of orphaned processes of php5-fpm. After I killed everything and restarted php5-fpm cleanly, it just went back to normal.

    Hope this helps.

    0 讨论(0)
提交回复
热议问题