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.
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.
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;
}
}
Благодаря подсказкам Тима я обнаружил свою проблему : Я не настроил сокет 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;
}