PHP Не работает через символические ссылки (CentOS, Nginx, PHP-FPM, PHP7)

Когда я использую эту конфигурацию, файлы PHP работают в базовой папке ( /var/www/dmcblue.com/www ) . Но я добавил туда символическую ссылку как data из / usr / share / phpMyAdmin . Файлы доступны (например, http: // [IP_ADDRESS] / data / themes / dot .gif ), но файлы PHP просто возвращают 404.

# /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  [IP_ADDRESS];

    # note that these lines are originally from the "location /" block
    #root   /var/www/dmcblue.com/www;
    #index index.php index.html index.htm;

    location / {
        root /var/www/dmcblue.com/www/;
        try_files $uri $uri/ =404;
        index index.php index.html index.htm;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        include fastcgi_params;
    }
}

Более странная часть состоит в том, что если я добавлю следующую чушь, это сработает:

location /data/ {
        root /var/www/dmcblue.com/www/;
        try_files $uri $uri/ =404;
        index index.php index.html index.htm;

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            include fastcgi_params;
        }
    }

Это не имеет смысла, и я не уверен, как я пришел к это.

Все файлы являются частью группы nginx , включая символическую ссылку.

По сути, я просто хочу использовать символические ссылки для создания подпапок, а это не работает для файлов PHP. Как мне сделать это правильно?

1
задан 17 April 2019 в 22:22
1 ответ

Я все еще не понимаю, почему, но я скорректировал конфигурацию из DigitalOcean , и, похоже, он работает. Если кто-нибудь сможет объяснить, почему оригинал не работает, я был бы очень признателен.

server {
        listen 80;
        listen [::]:80 ipv6only=on;
        root /var/www/dmcblue.com/www;
        index index.php index.html index.htm;
        server_name [IP_ADDRESS];
        location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
        }
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /usr/share/nginx/html;
        }
        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
      }

0
ответ дан 4 December 2019 в 03:05

Теги

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