打开PHP xdebug的快捷方式

时间:2015-11-13 17:29:04

标签: php powershell xdebug

转换xdebug On的脚本有效但我无法弄清楚创建一个运行它的快捷方式。如果我在C:\Users\George\Desktop\Development\Config Files中打开管理员PowerShell,命令.\PHPxDebugOn将使用修改后的php.ini重新启动Apache。 (还有一个PHPxDebugOff.ps1可以关闭xdebug。)单击快捷方式(以管理员身份运行)只会闪烁黑屏,但不会更改Apache。

脚本:

$iniFile = "C:\Users\George\Desktop\Development\Config Files\php.ini"
$xFile = "C:\Users\George\Desktop\Development\Config Files\xdebug.ini"
$phpIniFile = "C:\PHP\php.ini"

get-content $iniFile, $xFile | set-content $phpIniFile

C:\Apache24\bin\httpd -k restart

快捷方式目标:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -file "&C:\Users\George\Desktop\Development\Config Files\PHPxDebugOn.ps1"

2 个答案:

答案 0 :(得分:2)

问题出在快捷方式目标中。

如果路径正确,则删除&符号应解决脚本未运行的问题。

如果快捷方式中的目标文件以任何方式无效,PowerShell将退出而不尝试运行脚本。除非可以评估/解析/检索命令中的所有内容,否则默认行为是停止所有内容并报告错误。这就解释了为什么即使指定了-NoExit参数,窗口也会消失。 PowerShell确实在窗口可见的短暂时刻显示错误。屏幕刷新率和处理器速度就像它们一样,截图是一个难以接受的挑战。

示例1:%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -file "&C:\scripts\hello.ps1"

Invalid shortcut file path

示例2:%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -file "C:\scripts\hello.ps2"

Invalid extension

样本3(成功):%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -file "C:\scripts\hello.ps1"

Successful PowerShell shortcut execution

注意:

  • Repro环境:Windows 7 Enterprise with Powershell 5.0 2015年4月预览
  • .ps2文件扩展名在某些系统上可能有效
  • 您可以使用-NoProfile参数
  • 跳过加载PowerShell配置文件
  • File must be the last parameter in the command,因为在File参数名称后键入的所有字符都被解释为脚本文件路径,后跟脚本参数

答案 1 :(得分:1)

根据OP,看到我的评论是解决问题的更好方法,我将在此处发布答案:

我要做的是创建指向同一源的第二个虚拟主机,但加载单独的php.ini文件以在该vhost上启用xdebug。这样,您只需使用http://local.project.devhttp://local.project.debug即可在启用xdebug的情况下运行相同的代码。这样,每次要使用xdebug逐步执行代码时,都不必重新启动apache。