HTTP 505错误源于客户端与服务器HTTP协议版本不匹配,需检查服务器配置、PHP运行模式、客户端请求头及反向代理设置。具体包括:一、降级Web服务器协议至HTTP/1.1;二、确保PHP以mod_php或php-fpm而非CGI模式运行;三、禁用篡改请求头的浏览器插件;四、调整反向代理的HTTP版本协商参数。

如果您在浏览器中运行PHP文件时收到HTTP 505错误,这表示客户端(浏览器)不支持服务器所使用的HTTP协议版本。该错误通常与Web服务器配置、PHP运行环境或请求头异常有关,而非PHP代码本身问题。以下是解决此问题的步骤:
Apache或Nginx可能被手动配置为强制使用HTTP/2.0或HTTP/3.0,而部分旧版浏览器或本地测试环境仅支持HTTP/1.1,导致协议不匹配触发505错误。
1、打开Apache主配置文件httpd.conf或Nginx的nginx.conf,定位到server块或全局协议相关指令。
2、查找类似Protocols h2 http/1.1(Apache)或http2 on(Nginx)的配置行。
立即学习“PHP免费学习笔记(深入)”;
3、临时注释或移除HTTP/2启用指令,例如将Protocols h2 http/1.1改为Protocols http/1.1,或在Nginx中将listen 443 ssl http2;改为listen 443 ssl;。
4、保存配置文件,重启Apache或Nginx服务。
当PHP通过CGI方式运行且未正确设置SAPI环境时,可能向浏览器返回含HTTP/2.0状态行的响应头,但实际未启用HTTP/2支持,造成协议声明与实现不符。
1、创建一个测试文件info.php,内容为<?php phpinfo(); ?>,在浏览器中访问。
2、在输出页面中查找“Server API”字段,确认其值为Apache 2.0 Handler或FPM/FastCGI,而非“cgi-fcgi”。
3、若显示“cgi-fcgi”,编辑PHP配置php.ini,确保cgi.force_redirect = 0且cgi.fix_pathinfo = 1未被错误启用。
4、在Web服务器配置中禁用CGI模块,改用mod_php(Apache)或php-fpm(Nginx)标准集成方式。
某些代理工具、浏览器插件或调试软件会篡改原始请求的HTTP版本字段,向服务器发送非法的HTTP/5.0或HTTP/1.2等非标版本,触发505响应。
1、在Chrome中按F12打开开发者工具,切换至Network标签页。
2、刷新PHP页面,右键任意请求 → 选择“Copy” → “Copy as cURL”,粘贴至文本编辑器查看curl命令中是否含-H "HTTP/5.0"类非法头。
3、禁用所有浏览器扩展,尤其是HTTP Header修改类插件(如ModHeader、Requestly)。
4、使用隐身窗口或Edge/Chrome无痕模式重新访问PHP文件,排除客户端干扰。
若PHP应用部署在Nginx反代后端、CDN或云WAF之后,中间设备可能将客户端HTTP/1.1请求升级为HTTP/2转发给后端,而后端PHP服务器未启用HTTP/2支持,导致响应协议不一致。
1、登录Nginx反向代理配置,检查proxy_http_version指令是否设为proxy_http_version 1.1;。
2、确认upstream服务器监听配置未开启HTTP/2,例如避免在upstream server行中使用http2参数。
3、在反代location块中添加proxy_set_header Upgrade $http_upgrade;和proxy_set_header Connection "upgrade";仅用于WebSocket场景,普通PHP请求应删除这两行。
4、临时绕过反代,直接用curl访问后端PHP服务地址(如curl http://127.0.0.1:8000/test.php),验证是否仍返回505。
以上就是php文件浏览器运行提示505怎么办_505错误解决【教程】的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号