我已经在笔记本电脑(运行 Arch Linux)上设置了 nginx、php-fpm、mysql 和 phpMyAdmin。在我尝试移动主目录中的根目录之前,一切都正常。
下面是我正在使用的 nginx 配置文件:
#user html;
#user root root;
worker_processes 2;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server {
############### General Settings ###################
listen 80;
server_name localhost;
root /home/me/Development;
charset utf-8;
############## Document Root #####################
location / {
index index.php index.html index.htm;
autoindex on;
}
############## PHPMyAdmin #######################
location /phpmyadmin {
rewrite ^/* /phpMyAdmin last;
}
############# Error redirection pages ################
error_page 404 NGINX/html/404.html;
error_page 500 502 503 504 NGINX/html/50x.html;
############## Proxy Settings for FastCGI PHP Server #####
location ~ \.php$ {
try_files $uri =404;
#fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
}
location ~ /\.ht {
deny all;
}
}
}
当我尝试访问 php 文件(localhost/phpMyAdmin)时出现以下错误:
2016/05/20 16:33:12 [error] 8145#8145: *2 "/home/me/Development/phpMyAdmin/index.php" is forbidden (13: Permission denied), client: 127.0.0.1, server: localhost, request: "GET /phpMyAdmin/ HTTP/1.1", host: "localhost"
我尝试更改“Development”文件夹的权限(777 - 不是一个好主意)和所有者(用户名:用户名),但没有成功。
我还在 nginx.conf 文件中添加了以下行:
user root root;
但这导致 php-fpm 连接错误。我的 php.ini 中也有这行代码,以确保新目录是 php 允许的路径。
open_basedir= /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/usr/:/home/me/Development/
知道我做错了什么吗?
答案1
您的主目录受到保护,其他用户无法读取。以 root 身份启动 nginx 是一个非常糟糕的主意。如果您确实需要将项目放在主目录中,请尝试以您登录的用户身份启动 nginx 和 php-fpm。不要忘记 chown 所有 nginx 服务目录(/var/run/nginx 等)