是否可以将Visual Studio设置为远程调试virtualbox上基于php的站点?

是否可以将Visual Studio设置为远程调试virtualbox上基于php的站点?,php,visual-studio-2013,virtualbox,lamp,linux-mint,Php,Visual Studio 2013,Virtualbox,Lamp,Linux Mint,我的设置: 一台运行Visual Studio 2013 pro和Oracle Virtualbox的机器:Mint 17、Apache 2、PHP5、Mysql。 我已经使用samba网络映射了我的主目录。该项目位于我的主目录之外的一个公共html文件夹中。之所以要求进行此设置,是因为我们是在windows环境下开发的,但该站点托管在ubuntu服务器上 网站: 这是一个使用codeigniter框架的PHP网站,其中包括将生成的页面传递到PhantomJS中,以创建页面的屏幕截图,并将其传递

我的设置: 一台运行Visual Studio 2013 pro和Oracle Virtualbox的机器:Mint 17、Apache 2、PHP5、Mysql。 我已经使用samba网络映射了我的主目录。该项目位于我的主目录之外的一个公共html文件夹中。之所以要求进行此设置,是因为我们是在windows环境下开发的,但该站点托管在ubuntu服务器上

网站: 这是一个使用codeigniter框架的PHP网站,其中包括将生成的页面传递到PhantomJS中,以创建页面的屏幕截图,并将其传递到站点生成的pdf文件中,作为用户的报告

问题: 我可以从/var/www和{ip}/~userDir在Mint vbox上运行该站点。然而,有一些问题困扰着我,我希望能够使用PHP工具来实现VisualStudio(Devsense)中断PHP本身并读取对象的当前状态的功能。当我尝试使用VS(我认为VS附带的iis express服务器)时,我可以在断点处进入代码,轻松查看对象的状态。然而,唯一拒绝工作的是PhantomJS(尽管只有VS IIS)。在指示灯上运行相同的过程效果很好。(即)

我“假设”这个障碍介于iis设置(我一点都不精通)和如何从windows使用linux共享之间。我在进入
exec()
之前使用的
escapeshellcmd($exec)
命令在VS中呈现的路径与在LAMP服务器上呈现的路径不同。我从
$output=exec($escaped\u command,$outArray,$rtnVal)
甚至
$someError=error\u get\u last()
中根本没有得到任何响应(读作:在执行行后步进并读取每个变量的状态)

问题: 是否有人将VS设置为使用虚拟Linux服务器使用breakponts测试php?我是否可以设置VS,使其使用LAMP中的php引擎而不是自己的引擎

我知道在服务器区域的“项目选项”选项卡中,您可以“使用自定义Web服务器”,但当我将Virtualbox的IP放在该位置时,我会得到“无效的URI:无法解析主机名”。我知道服务器在那里,当我将相同的URL放入浏览器时,会出现欢迎页面


感谢您抽出时间阅读本文以及您可能获得的任何帮助。

是的,有一种调试外部虚拟机环境的方法,这就是我使用Visual Studio和Xdebug扩展来完成此任务的方法

以下是步骤

  • 确保在VisualStudio中安装了PHP工具。确保在虚拟机中安装并启用了Xdebug。我通常在
    xdebug\u on
    命令中使用SSH
  • 确保您正在处理的项目是VisualStudio中的PHP项目
  • 右键单击项目文件并转到属性
  • 转到服务器并输入您的服务器url(您的本地域url是什么)
  • 设置xdebug端口,默认为9000或80
  • 输入您的文件/目录,它是您在本地计算机上映射的路径,例如:C:/programfiles/www/wordpress default/public\u html
  • 在服务器上输入您的绝对路径,例如:/srv/www/wordpress default/public\u html
  • 确保您具有运行Visual Studio的管理权限
  • 下载并安装
  • 创建断点并使用F5运行调试器
  • 确保Chrome Xdebug Helper正在运行

  • 这是使用此机器的默认/“开箱即用”设置,因此您可能需要调整这些值。希望这能有所帮助。

    我根本不知道Visual Studio对PHP有任何语言支持。活得多好啊!我真的很想知道为什么你在mint box上使用我见过的最复杂的解决方案之一,而不是像你现在使用的那样在mint box上使用Apache和虚拟网络,完全抛弃IIS,在mint安装上使用本机IDE而不是VS和IIS?(编辑:漏掉了一个字)@Brad Yep和你得到的IntelliSense插件、完整的php手册(鼠标悬停)以及其他好东西。@Thom你知道PHPStorm吗?流浪汉。。。而puphpet.com@iamgory问题的重点是不要使用IIS,而是使用铸币盒上的Apache2。至于剩下的,我真的很喜欢VS,从来没有遇到过问题。我们的团队在Windows环境下开发,但我们的网站都是基于Linux的。这对我来说是新鲜事。
    $src = "var page = require('webpage').create(); page.viewportSize = { width: {$wi} , height: {$hi}};";
      if (isset($clipw) && isset($cliph)) {
          $src .= "page.clipRect = { top: 0, left: 0, width: {$clipw}, height: {$cliph} };";
      }
    $src .= "page.open('{$url}', function () {
             page.evaluate(function() {
                   document.body.bgColor = 'white';
                   });
    
             page.render('{$cache_job}');
                   phantom.exit();
                  });
             page.onError = function (msg, trace) {
                 console.log(msg);
                 trace.forEach(function(item) {
                 console.log('  ', item.file, ':', item.line);
                  })
             }";
    $job_file = $jobs . $url_segs['host'] . crc32($src) . '.js';
    file_put_contents($job_file, $src);
    $exec = $bin_files . 'phantomjs ' . $job_file;
    $escaped_command = escapeshellcmd($exec);
    $output = exec($escaped_command, $outArray, $rtnVal );
    $someError = error_get_last();