PhpStorm 调试、文档根和包含 ($_SERVER['DOCUMENT_ROOT'] 未解释)

PhpStorm debugging, document roots and includes ($_SERVER['DOCUMENT_ROOT'] not interpreted)

编辑:我稍后会正确编辑这个问题,但这不是 Apache 问题,而是 PhpStorm 中的 IDE 问题。我已经对所有问题进行了排序并在下面进行了回答。

几个月来,我一直在尝试在各种机器上解决问题。我认为我已经通过魔法从我的 Apache 设置中清除了 gremlins(如果你想要更多详细信息,请点击这里 )。

现在似乎一切正常。我有各种虚拟主机,包括 sane30sane30.dev,它们在网络浏览器中的行为符合预期。

如果我在 sane30.dev/index.phpsane30/index.php 中执行 echo $_SERVER['DOCUMENT_ROOT'];,我会得到 C:/xampp/htdocs/sane30/。如果我用 localhost/sane30/index.php 做同样的测试,我会得到 C:/xampp/htdocs/ - 页面运行但是没有找到任何 include 或图像或任何东西。我猜一切都如预期的那样。

我目前真正的问题是在 PhpStorm 中调试。

A) 我真的很难理解如何在 PhpStorm 中进行调试 - 我 100% 相信它会非常有用,但我发现它很难理解而且

B) 让 PhpStorm 始终如一地找到正确的文档根目录让我做了一场噩梦。每次我点击调试时,它都会以 http://localhost/sane30/beta30/newForm.php 而不是 http://sane30/beta30/newForm.phphttp://sane30.dev/beta30/newForm.php 的形式启动,这会搞砸所有 includes 并使其无法调试。更糟糕的是,似乎发生了一些非常随机的事情。我尝试更改许多设置但收效甚微。

所以 a) 是否有人熟悉 PhpStorm 并且能够建议我在哪里将 sane.dev 定义为根服务器而不是 localhost

and/or

b) 任何人都可以提供一种策略来使所有页面理解相同的根目录,而不管它们最初是如何启动的(sane30 或 localhost)吗?

hosts我有

127.0.0.1  sane30
127.0.0.1  sane30.dev

在 httpd-vhosts.conf 我有

<VirtualHost *:80>
ServerName sane30
ServerAlias sane30.dev *.sane30.dev
DocumentRoot c:/xampp/htdocs/sane30/
</VirtualHost>

如果有帮助的话。

这里有两个问题:

1) PhpStorm 不会翻译 $_SERVER['DOCUMENT_ROOT'] 所以任何使用它来创建路径的行为都是注定要失败的。

2) 在 PhpStorm 中设置目录。

我不确定是否必须这样做,但它似乎对我有用。

在您需要部署的设置中:

在那里我设置了我的根 URL 并使用了 "In place" 这似乎工作正常。

然后在映射选项卡上我设置了相关路径(这可能没问题但值得检查)。

我终于遇到了两个调试障碍,但我在这里或 Google 找不到任何解决方案。

"Frames are not available":我浪费了一个小时认为这是一个问题——这只是意味着调试没有什么可报告的。如果您查看控制台,它只会显示 "yippee it ran without incident" 因此,如果您设置了断点、变量监视或其他任何内容 - 那么您需要检查您正在查看的内容!

我也浪费了很多时间,因为调试器中的“框架”选项卡消失了(不可见)。

解决方案再简单不过了,但如果您是像我这样的新手,希望这可以节省您的时间。只需单击 "Restore layout" 按钮,瞧。