linux环境使用docker部署php环境报错File not found.

在阿里云服务器上,使用docker-ce版本部署php开发环境,当部署完nginx和php-fpm后,测试.html结尾文件可以访问,但是测试.php文件就会报错,报错内容如下:

File not found.

查看docker运行的nginx错误日志,报错如下:

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

查看docker运行下的php-fpm日志,报错如下:

[27-Apr-2018 02:58:49] NOTICE: fpm is running, pid 1

[27-Apr-2018 02:58:49] NOTICE: ready to handle connections

172.17.0.3 - 27/Apr/2018:02:59:26 +0000 "GET /index.php" 404

执行的安装nginx和PHP命令如下:

nginx:docker run -p 8080:80 --name my_nginx -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -v /docker/nginx/conf/conf.d/:/etc/nginx/conf.d/ -v /docker/nginx/logs/:/var/log/nginx/ -v /docker/www/myBlog/:/var/html/ --link my_php-fpm -d nginx:1.13
php:docker run -p 9072:9000 --name my_php-fpm -v /docker/php/conf/php.ini:/etc/php.ini:ro -v /docker/www/myBlog:/www -d php:7.1-fpm

nginx的配置文件如下:

clipboard.png

网上解答已经看了很多,没有解决,望协助,谢谢。

阅读 17.1k
4 个回答

已找到解决方案:
修改nginx配置即可
fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;

错误一致:

FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

docker启动phpfpm

sudo docker run \
--name php72 \
--link=mysql:mysql \

**-v /data/html:/var/www/html:ro \** //注意这里

-d --privileged=true php:7.2-fpm

docker 启动 nginx

sudo docker run \
--name nginx \
--link=php72:phpfpm \
-d -p 8080:80 \
-v /data/html:/usr/share/nginx/html:rw \
 nginx

nginx.conf

   location ~ \.php$ {
       root           /usr/share/nginx/html;
       //注意这里
       fastcgi_pass   phpfpm:9000; 
       fastcgi_index  index.php;
       #fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
       //注意这里,和phpfpm挂载目录一致
       fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
       include        fastcgi_params;
   }

问题的主要是phpfpm的挂载出问题,或者是nginx配置文件,fastcgi_param参数不对,别百度拉,百度搜的都是什么啊

有没有映射网站目录到docker啊 兄弟

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏