如何在Nginx 1.12.2中为PHP设置绝对文档根?
解决PHP绝对路径指向网站根目录的问题
没问题,这事儿很好搞定!你只需要调整Nginx里的PHP FastCGI配置,明确告诉PHP把/var/www/mydomain.com当作它的绝对文档根,这样就能直接用include '/css/style.css'这种短路径了。
修改后的Nginx PHP配置片段
把你现有的location ~ \.php$块更新成下面这样,关键配置我标出来了:
server { listen 80; server_name mydomain.com; root /var/www/mydomain.com/; index index.php index.html index.htm; error_page 404 /404.html; location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 替换成你实际的PHP-FPM socket路径 fastcgi_index index.php; # 核心配置:指定PHP的绝对文档根 fastcgi_param DOCUMENT_ROOT /var/www/mydomain.com; # 确保脚本路径解析正确 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 可选但推荐:限制PHP仅访问指定目录,提升安全性 fastcgi_param PHP_ADMIN_VALUE "open_basedir=/var/www/mydomain.com:/tmp"; include fastcgi_params; } }
关键配置说明
fastcgi_param DOCUMENT_ROOT /var/www/mydomain.com;:这是最核心的一步,告诉PHP它的绝对根目录就是你的网站根目录。当你用/开头的路径时,PHP会自动把这个路径拼在前面,比如/css/style.css就会被解析为/var/www/mydomain.com/css/style.css。fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;:确保Nginx能正确传递PHP脚本的完整路径,避免出现找不到脚本的问题。PHP_ADMIN_VALUE那行:这是额外的安全配置,限制PHP只能访问你的网站根目录和临时目录,防止PHP意外访问服务器上的其他敏感文件,同时也能辅助强化根目录的路径解析逻辑。
最后一步:重启服务
修改完配置后,别忘了重启Nginx和PHP-FPM让配置生效:
sudo systemctl restart nginx sudo systemctl restart php7.4-fpm # 换成你实际使用的PHP版本,比如php8.1-fpm
这样设置之后,你就可以愉快地用短路径来include文件啦!
内容的提问来源于stack exchange,提问作者Widziks
相关产品推荐
相关产品推荐

