php - 502 Bad Gateway PHP Storm 但设置了解释器和可执行文件

标签 php phpstorm development-environment windows-7-x64

  • 操作系统: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-Oct-01 01:25:56)) 并将所有内容设置为 PHP 5.5

    enter image description here

    老实说,我很困惑为什么我仍然收到 502 错误。

    我已经多次运行它,它确实运行了一次(之前或之后的实例都没有变化),我发现这非常奇怪,但仅适用于一页加载,而且它不是可重复的。

    编辑:当我打开另一个项目进行比较时意识到一个区别。有一次它确实起作用了,右键单击上下文菜单看起来不同。另一个项目调试得很好。有什么不同?是什么赋予了?两个项目都使用相同的解释器。

    ...还发现,回到工作项目,附加的上下文菜单项消失了。

    enter image description here

    编辑 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 的示例。
    enter image description here

    编辑 8:我想我终于得到了一个可靠的模式,它什么时候工作,什么时候不工作。
    上下文菜单的事情是一个红鲱鱼。当条件满足时,没有子菜单的那些将工作得很好。
  • A. 必须选择一个有效的文件(目前还没有注意到工作文件与非工作文件的模式,事实上,一个工作文件和一个非工作文件具有完全相同的代码)。
  • B. 在任何情况下都不能“停止并重新运行”文件,因为这会导致文件随后访问坏网关。
  • C. 你不能打开一个非工作文件。如果这样做,当前服务器将挂起并将继续挂起,直到在不同的文件上运行“停止并重新运行”,之后所有打开的文件都会收到错误的网关错误。打开非工作文件将导致当前工作文件出现错误网关错误。
  • D. 使工作文件在 C 或 D 需要重新启动系统后重新工作。

  • 编辑9:
    正在摆弄验证调试器配置工具,最后得到它给了我一个不同的答案(感觉很傻,实际上,即使我认为该站点正在托管,只需将目标目录包含在验证脚本的 url 中直接来自那个目录。哦,好吧。无论如何,有一个错误,不确定这是否是我的问题的原因,但会研究它。
    enter image description here

    编辑10:
    添加到 php.ini 以解决上述错误...
    xdebug.remote_enable=1

    编辑 11:从添加的行中看不到真正的好处。

    编辑 12:发布请求的浏览器屏幕截图
    enter image description here

    编辑 13:更新 phpStorm 的 EAP (10.0.2) 版本。到目前为止,它似乎是相同的结果,尽管现在至少控制台也向我显示了错误,而不仅仅是网页。还尝试完全通过 SecureWAMP 的 apache 服务器运行只是为了发现有什么东西阻止我改变默认的 htdocs 目录。

    enter image description here

    最佳答案

    FWIW,我认为这可能像超时问题一样简单。

    我的环境与 OPs、Win764、PhpStorm 10.0.4、PHP 5.5.27 非常相似。

    我有一些 F3 自动化测试,当我使用工具栏中 float 到我的代码右上角的小图标之一在“浏览器中”运行测试代码时,我经常看到 502 Bad Gateway 错误。 (见下图。)

    对于我的一些测试页,错误似乎是第一次出现。运行一次,失败,再次运行,工作正常。其他人似乎需要运行 2 或 3 次才能工作。但是我有一些我从未在浏览器中看到过的工作。

    OTOH,如果我在代码窗口中右键单击这些页面中的任何一个并进行调试,则无论我让它一直运行还是逐行运行,代码都可以正常运行。

    显然,我的工具设置没有错。有些测试可以而且确实每次都从浏览器运行。

    我认为正在发生的是可能失败的测试执行相当繁重的数据库查询。当我在浏览器中运行我的请求时,我的 php 解释器会主动超时。

    但是,每次页面运行和超时时,它的一个或多个查询都会被缓存,下次我运行它时,页面会更快。最终,对于将要运行的那些,足够的 db 工作被缓存,以便页面可以进入网络并在时间限制之前完成。

    这就是我的理论。我还没有发现在哪里以及如何更改解释器超时间隔。即从 PhpStorm 运行时的超时间隔。我已经有了

    max_execution_time = 300
    

    在我的 php.ini 文件中,可以看到它是在我使用 phpinfo() 时设置的。但是我必须相信当解释器从 PhpStorm 运行时它会被覆盖。

    更新 - 可能的修复:因此,即使我的 php.ini 文件具有 max_execution_time 设置,我还是尝试查看我的 php 解释器设置,如 this PhpStorm support page 所述,第 1 步和第 2 步。我的 max_execution_time 为 0。因此,我使用该页面上的 UI 添加了一个设置,使其与我在 php.ini 中的 300 相同。 (然后我关闭并重新打开 PhpStorm —— 一个老程序员的偏执狂。)到目前为止,我在我的“最差”页面上看到了一个错误的网关消息,但它甚至第二次运行了。其他的似乎都在运行到完成。我会仔细等待,看看这个“修复”是否对我有任何好处。

    (而且,在任何人被迫指出这一点之前:是的,缓存查询对于自动化测试来说是一个糟糕的主意。必须解决这个问题——但只有在我弄清楚如何延长解释器超时以便我的测试可以在没有缓存的情况下成功之后。)

    enter image description here

    关于php - 502 Bad Gateway PHP Storm 但设置了解释器和可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34028199/

    相关文章:

    python - 在哪里可以下载适用于 Windows 的 Python 2.7.3 的开发头文件?

    ruby-on-rails - 在开发模式下在 Ruby on Rails 上使用 alias_method_chain 自定义 Helper [REDMINE]

    php - 图片上传后的 Buddypress 钩子(Hook)

    php - 为什么 'SELECT count()' 返回值 'Array' ?

    ubuntu - PhpStorm 2017.1 在 Ubuntu 16.10 上卡住

    php - 如何在 WebStorm/PHPStorm 中激活函数引用?

    文件资源管理器/项目窗口中的 PhpStorm 浅黄色突出显示,它是什么以及如何更改颜色?

    php - 当以设置了 setuid 位的非 root 用户身份运行时,composer 会发出错误警告

    php - 当数据库已经包含数据列时,如何从表单将数据输入到mysql数据库中?

    php - 支持 PHP v2 的轻量级开发 Web 服务器