在使用 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: 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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号