操作系统:
依旧是Linux
本地启动正常,通过curl 地址 命令查看php,nginx日志等都可以正常返回页面,但外部无法访问,浏览器提示XXXX拒绝了您的请求
解决: 先检查本地端口有没有开启
443是https默认端口 80是http默认端口
# 查询指定端口号状态
sudo firewall -cmd --query-port=443/tcp
sudo firewall -cmd --query-port=80/tcp
# 返回yes是开启no是没有开启,如果返回no执行就先开启端口
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
如果都返回yes,你可以在外部通过telnet来测试你的服务器端口是否正常
telnet 你的域名/ip 端口号
# 例如 telnet www.abc.com 443
如果返回连接不成功,那你就要考虑你的请求是不是被网关拦截了,我的就是这种情况,最后咨询运营商说80/443端口需要单独备案
docker启动php项目正常,访问伪静态文件文件报错
解决:nginx php项目访问端口配置文件中加入
location / {
if (!-e $request_filename) {
rewrite ^(.*) /index.php last;
}
}
项目上传文件报错无权限
解决:php项目加入读写权限
chmod -R 777 项目文件夹名称
登录成功无法跳转到入口页面,原因登录名密码没有写到session中,导致校验失败跳回登陆页面
解决:
第一步:复制php.development.ini到宿主机目录
docker cp 你的php容器名称:/usr/local/etc/php/php.development.ini php.development.ini
ps:在这之前可以通过如下命令进入容器目录验证ini文件在哪
sudo docker exec -it 你的php容器名称 /bin/bash
第二步:修改宿主机的php.development.ini,并重命名为php.ini,vim进入编辑修改如下配置
a)设置时区 似乎跟报错没什么关系但是一起改了
date.timezone = Asia/Shanghai
b)设置session保存路径
session.save_path = "/tmp"
第三步:保存,将当前文件复制到docker容器目录
docker cp php.ini 你的php容器名:/usr/local/etc/php/php.ini
然后重启
docker restart 你的php容器名
打开php某页面报错
To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in
这个报错提示很明确了,解决方法就是ini的配置 'always_populate_raw_post_data' to '-1'取消注释
装了物理防火墙之后伪静态文件打不开
伪静态文件打开头为http,物理防火墙没有对80端口进行映射
👉 以上内容仅供参考,请谨慎操作。