首先呢是 php 的版本问题,版本是 php80,81,82 这三个版本可以安装,83 以上是安装不了的。
第二种情况是 ng 配置问题
默认是
server {
listen 80 ;
server_name img.example.com;
index index.php index.html index.htm default.php default.htm default.html;
access_log /www/sites/img.example.com/log/access.log main;
error_log /www/sites/img.example.com/log/error.log;
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
return 404;
}
location ^~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
}
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
error_page 404 /404.html;
root /www/sites/img.example.com/index/public;
location ~ [^/]\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
include fastcgi-php.conf;
include fastcgi_params;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$" ) {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
}要插入这一段
location / {
try_files $uri $uri/ /index.php?$query_string;
}完整代码如下
server {
listen 80;
server_name img.example.com;
index index.php index.html;
access_log /www/sites/img.example.com/log/access.log main;
error_log /www/sites/img.example.com/log/error.log;
# 站点根目录必须指向 Laravel 的 public 子目录
root /www/sites/img.example.com/index/public;
# 拒绝访问敏感文件
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
return 404;
}
# ACME 证书验证(1Panel 默认模板自带,可保留)
location ^~ /.well-known/acme-challenge {
allow all;
root /usr/share/nginx/html;
}
# ★ 关键:所有非物理文件请求转给 index.php,交给 Laravel 路由处理
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP-FPM 处理
# 端口必须指向运行兰空所要求的 PHP 版本(8.0 ~ 8.2)的容器
# 用 `docker ps | grep php` 查看实际映射,例如 127.0.0.1:9004->9000 则填 9004
location ~ [^/]\.php(/|$) {
fastcgi_pass 127.0.0.1:9004;
include fastcgi-php.conf;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}注意‼️
1,上面的 img.example.com 请换成你自己的域名。
2,fastcgi_pass 127.0.0.1:9004 是 1Panel 给某个 PHP 容器分配的特定端口,不同机器不同,务必用 docker ps | grep php 确认后替换。
3,/www/sites/... 是 1Panel Nginx 容器内的路径,如果你不是用 1Panel(比如裸机装 Nginx),按自己的实际路径写。
4,生产环境请把 .env 中 APP_DEBUG 设为 false、APP_ENV 设为 production,装好后执行一次 php artisan config:clear。
5,.env 里的 APP_KEY、DB_PASSWORD 属于敏感信息,写文档时不要贴真实值。
更多操作
请 登录 后参与讨论。