Docker Compose部署LEMP环境报错“Primary script unknown”是什么原因?

Docker Compose 部署 LEMP 环境报错“Primary script unknown”解决方案

在使用 docker compose 部署 lemp (linux, nginx, mysql, php) 环境时,访问 php 文件出现 “primary script unknown” 错误?本文将分析问题根源并提供解决方案。

Docker Compose部署LEMP环境报错“Primary script unknown”是什么原因?

错误原因在于 Docker Compose 配置文件中,错误地重复挂载了宿主机的 /opt/html/ 目录。 Nginx 容器的 /etc/nginx/conf.d/default.conf 文件中,location 配置存在冲突:

location / {
    root   /usr/share/nginx/html/wordpress;
    index  index.php index.html;
}
location ~.php$ {
    root /usr/share/nginx/html/;
    fastcgi_pass php-fpm01:9000;
    fastcgi_index index.php;
    fastcgi_param script_filename /var/www/html$fastcgi_script_name;
    include fastcgi_params;
}
登录后复制

由于 /opt/html/ 被同时挂载到 /usr/share/nginx/html/ 和 /usr/share/nginx/html/wordpress/ ,当访问如 /wp-admin/install.php 时,Nginx 会在两个位置同时查找,而 wordpress 目录位于 /usr/share/nginx/html/wordpress/ ,导致找不到 PHP 脚本,从而报错。

解决方案:

移除 Nginx 容器中冗余的挂载配置。 在 docker-compose.yml 文件中,删除 Nginx 服务的以下配置:

- /opt/html/:/usr/share/nginx/html
登录后复制

修改后的 docker-compose.yml 文件示例:

services:
  web01:
    container_name: nginx01
    depends_on:
      - "db01"
      - "php01"
    image: nginx:stable
    ports:
      - "8080:80"
    volumes:
      - /opt/conf/nginx/:/etc/nginx
    networks:
      - lnmp

  db01:
    container_name: mysql01
    image: mysql:5.7
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
    env_file:
      - env.mysql
    networks:
      - lnmp

  php01:
    container_name: php-fpm01
    image: vphp:7.3-fpm
    ports:
      - "9000:9000"
    volumes:
      - /opt/conf/php-fpm/php-fpm.d:/usr/local/etc/php-fpm.d
      - /opt/html/:/var/www/html
    networks:
      - lnmp
    privileged: true

volumes:
  db_data:
    external: false
networks:
  lnmp:
    external: false
登录后复制

执行 docker-compose up -d 命令重新部署 LEMP 环境,即可解决 “primary script unknown” 错误。 确保 /opt/html/ 只在 PHP-FPM 容器中被正确挂载。 如果问题仍然存在,请检查 Nginx 配置文件中的 root 指令是否正确指向你的项目根目录。

以上就是Docker Compose部署LEMP环境报错“Primary script unknown”是什么原因?的详细内容,更多请关注php中文网其它相关文章!

https://www.php.cn/faq/1230307.html

发表回复

Your email address will not be published. Required fields are marked *