http: // MY_IP / phpmyadmin позволяет мне загрузить файл PHP размером 19 КБ в среде Nginx с php-fpm7

http: // MY_IP / phpmyadmin дает мне возможность загрузить файл PHP размером 19 КБ в среде Ubuntu с Nginx 1.10.3 и php-7-fpm.

После установки Nginx с помощью apt-get install nginx mysql-server php-fpm php-mysql -y Я сделал следующее:

sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/7.0/fpm/php.ini
sed -i 's/index index.html index.htm/index index.php index.html index.htm/g' /etc/nginx/nginx.conf
/etc/init.d/php7.0-fpm restart # MBP.
systemctl restart nginx # http://ip_address.

Я затем установил PMA:

cd /var/www/html
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
find /var/www/html -type f -iname '*phpmyadmin*.zip' -exec unzip {} \;
find /var/www/html -type d -iname 'phpmyadmin-*' -exec mv {} phpmyadmin \;
ln -s /usr/share/phpmyadmin /usr/share/nginx/html

Затем я перешел на http: // myIpAddress / phpmyadmin и получил предложение по загрузке.

nginx -t приносит:

nginx: файл конфигурации / etc / nginx / nginx. "/var/www/html/phpmyadmin/" is forbidden, client: 79.178.145.252, server: _, request: "GET /phpmyadmin/ HTTP/1.1", host: "46.101.255.64"

2017/08/09 18:57:12 [error] 1424#1424: *3 directory index of "/var/www/html/phpmyadmin/" is forbidden, client: 79.178.145.252, server: _, request: "GET /phpmyadmin/ HTTP/1.

It led me to think this is a permissions issue, so I ran:

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

Yet, it didn't help.

  • It doesn't do with clearing with browser cache, in this case.
  • I believe the problem is php-fpm related.

What else can cause this? As a freshman I don't know what else to check. I checked all logs I know. I will keep researching this but any advice would be valuable.


Update1:

Here's my Nginx configuration at /etc/nginx/sites-available/default.conf. Non code rows excluded:

server {

listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

root /var/www/html;

index index.php index.html index.htm index.nginx-debian.html;

server_name _;

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

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    include snippets/fastcgi-php.conf;
}

location ~ /\.ht {
    deny all;
}

location ~* \.(gif|jpg|png)$ {
    expires 30d;
}

}

-1
задан 10 August 2017 в 20:33
1 ответ

Благодаря подсказкам Тима я обнаружил свою проблему : Я не настроил сокет TCP.

Если нашел несколько руководств по этой конкретной проблеме и синтезировал решение, прочитав их.

Это руководство помогло мне больше всего. Эти сеансы контроля качества также помогли: [1], [2].


Вот как я решил это в точности:

В /etc/php/7.0/fpm/pool.d я изменил:

listen = /run/php/php7.0-fpm.sock

на:

listen = 127.0.0.1:9000

Я также изменил, соответственно, в / etc / nginx / sites-available / default , с:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;

}

на:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass 127.0.0.1:9000;
}

I, чем разрешенный порт 9000 в CSF-LFD в csf.conf (если вы не используете CSF-LFD, это не имеет отношения к вам, но вы, скорее всего, используете другое программное обеспечение для предотвращения вторжений (IPS):

# Allow incoming TCP ports (added 9000 to TCP_IN).
# Allow outgoing TCP ports (added 9000 to TCP_OUT).

После этого я перезапустил PHP-FPM и Nginx:

/etc/init.d/php7.0-fpm restart
systemctl restart nginx

Затем мне удалось получить доступ к PHPmyadmin из браузера (для этого мне также пришлось установить mbstring для моей версии PHP через apt-get install php7.0-mbsting ).

  • Вы также может потребоваться очистить кеш вашего браузера.

Вот и все.


Примечание:

Если все-таки вы не смогли загрузить файл базы данных через PHPmyadmin, даже если вы это сделали:

sed -i 's/post_max_size \= .M/post_max_size \= 200M/g' /etc/php/7.0/fpm/php.ini # regex dot instead any default character.
sed -i 's/upload_max_filesize \= .M/upload_max_filesize \= 200M/g' /etc/php/7.0/fpm/php.ini

Добавьте следующее в default.conf (скажем, до самого конца блока перед закрывающей фигурной скобкой):

server {
    ...
    client_max_body_size 200M;
}
0
ответ дан 5 December 2019 в 20:23

Теги

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