- 操作系统:Windows 7 - 64位
- PHP:独立的php.exe(PHP版本5.5)
- PHPStorm版本:10.0.1
我看到关于在 PhpStorm 中解决 502 网关错误的建议都只涉及确保您设置了解释器和可执行文件。我正在使用独立的 php.exe(http://windows.php.net/download#php-5.5 VC11 x86 线程安全版(2015年10月1日01:25:56)),并将所有设置为 PHP 5.5。
我很困惑为什么我仍然收到502错误。我运行了多次,它只运行了一次(之前和之后的实例都没有更改),这让我感到非常奇怪,但只有一次页面加载,并且不能重复发生。
编辑:当我打开另一个项目进行比较时,意识到一个不同之处。唯一一次它正常工作时,右键单击上下文菜单看起来不同。其他项目正在进行调试。是什么造成了差异?两个项目都使用相同的解释器。
此外,发现回到工作项目时,附加的上下文菜单项消失了。 编辑2:仍在寻找问题......发现只有某些文件在我启动PHPStorm并具有上下文菜单时才能正常运行。然而,其他文件在PHPStorm启动时则不行。如果我尝试在没有附加菜单的情况下调试文件,则服务器将返回502错误,然后“好”的文件将不再有额外的菜单。如果我首先使用具有额外上下文菜单的文件开始,它将正常运行,尽管如果我跟随一个没有额外菜单的文件,则第一个文件将停止工作。我觉得我正在取得“进展”,但我也变得更加困惑,特别是因为每次我尝试运行不同的文件时,它都会问我“[x]是单实例运行配置。您确定要停止运行中的吗?”此时我点击“停止并重新运行”。我认为如果停止和重新运行,那么给出502的那些文件就不会有任何东西传递到“好”文件中...但事实似乎并非如此。
编辑3:我想知道我的解释器设置是否有问题,所以我下载了securewamp(http://securewamp.org/en/),获取了便携式版本,安装并使用默认设置添加了xdebug(此版本:php_xdebug-2.4.0rc1-5.4-vc9.dll),但仍然存在完全相同的问题。
我甚至不知道还有什么其他的事情可以检查。
编辑4:现在我非常确定这是PHPStorm中的某个问题。其中一个从未工作过的php文件,我直接用php.exe打开后就可以正常工作。这一定是我在phpstorm中缺失的一些设置或者某些损坏的功能。
编辑5:按照潜在原因的线索,尝试运行“运行>验证调试器”工具。路径和URL保持默认值(没有更改的原因),尝试验证结果为“请检查正确配置验证脚本的Web路径”,并列出我的目录。
编辑6:验证只能识别127.0.0.1,因为SecureWAMP正在运行。关闭它的服务器会导致“无法执行验证脚本:'连接被拒绝:连接'。”
编辑7:正如LazyOne指出的那样,我在第一张图片中的文件是两种不同的文件类型(php和html)。我已经在两侧都使用 .php 文件进行了操作,只是在截图时抓取了我当前正在工作的两个文件之一。以下是其中一个 php 的示例。
编辑8:我认为我最终找到了它何时起作用,何时不起作用的可靠模式。 上下文菜单不是问题。没有子菜单的情况在满足条件时可以正常工作。
A. 必须选择一个有效的文件(目前还没有发现有效文件和无效文件的模式,事实上,一个有效文件和一个无效文件具有完全相同的代码)。
B. 任何情况下都不能“停止并重新运行”文件,否则文件将在之后遇到错误网关。
C. 不能打开一个无效的文件。如果这样做,当前服务器会挂起,并将继续挂起,直到在不同的文件上运行“停止并重新运行”为止,此后所有打开的文件都将出现错误网关。打开一个无效文件会导致当前正在工作的文件出现错误网关。
D. 在 C 或 D 后使有效文件再次工作需要重新启动系统。
编辑9:
我在调试配置工具中摸索,最终得到了不同的答案(感觉有点傻,实际上只需要将目标目录包含在验证脚本的url中即可,尽管我认为该站点是直接从该目录托管的。不过没关系。无论如何,我有一个错误,不确定它是否是我的问题原因,但会进行研究。
编辑10: 添加到php.ini以解决上述错误... xdebug.remote_enable=1
编辑11:没有看到添加行带来的真正好处。
编辑13:更新phpStorm的EAP(10.0.2)版本。目前看起来结果相同,不过现在至少控制台也向我显示错误,而不仅仅是网页。还尝试通过SecureWAMP的Apache服务器运行,只发现有些东西阻止我从默认的htdocs目录更改。
localhost:63342/PROJECT_NAME/
。所以……使用你的WAMP而不是内置的Web服务器。