Docker Compose 部署 LEMP 环境报错“Primary script unknown”解决方案
在使用 docker compose 部署 lemp (linux, nginx, mysql, php) 环境时,访问 php 文件出现 “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: truevolumes: db_data: external: falsenetworks: lnmp: external: false
登录后复制
执行 docker-compose up -d 命令重新部署 LEMP 环境,即可解决 “primary script unknown” 错误。 确保 /opt/html/ 只在 PHP-FPM 容器中被正确挂载。 如果问题仍然存在,请检查 Nginx 配置文件中的 root 指令是否正确指向你的项目根目录。
以上就是Docker Compose部署LEMP环境报错“Primary script unknown”是什么原因?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2498235.html