Моя настройка:
Одна машина под управлением Visual Studio 2013 pro и Oracle Virtualbox: Mint 17, Apache 2, PHP5, Mysql.
Я сопоставил сеть с моим домашним каталогом, используя samba. Проект находится вне моего домашнего каталога, в папке public_html. Эта настройка была запрошена, потому что мы разрабатываем в среде Windows, но сайт размещен на сервере Ubuntu.
Сайт:
Это веб-сайт PHP, использующий платформу codeigniter, которая, помимо прочего, передает сгенерированную страницу в PhantomJS, чтобы создать снимок экрана с этой страницей, который передается в сгенерированный сайтом файл pdf в виде отчета для пользователя.
Эта проблема:
Я могу запустить сайт как есть на Mint vbox как из / var / www, так и из {ip} / ~ userDir. Однако некоторые проблемы мешают мне, что я хотел бы иметь возможность использовать инструменты PHP для способности Visual Studio (Devsense) прерывать сам php и читать текущее состояние объектов. Когда я пытаюсь использовать VS (сервер iis express, который поставляется с VS, я думаю), я могу войти в код в точке останова и легко просмотреть состояние моих объектов. Однако единственное, что отказывается работать, это PhantomJS (хотя только VS IIS). Запуск того же процесса на ЛАМПА работает просто отлично. (То есть)
$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();
Я предполагаю, что контрольно-пропускной пункт находится где-то между настройкой iis (в которой я совсем не разбираюсь) и тем, как я использую Linux-ресурс из Windows. escapeshellcmd($exec)
Команда, которую я использую перед тем, как перейти в exec()
отображает путь в VS иначе, чем на сервере LAMP. Я не получаю ответа (читай как: входить и читать состояния каждой переменной после выполнения строки) вообще от $output = exec($escaped_command, $outArray, $rtnVal )
или даже $someError = error_get_last()
,
Вопрос:
Кто-нибудь настраивал VS для использования виртуального Linux-сервера для тестирования php с использованием breakponts? Могу ли я настроить VS так, чтобы он использовал движок php из ЛАМПЫ вместо собственного?
Я знаю, что на вкладке параметров проекта в области «Серверы» вы можете «Использовать пользовательский веб-сервер», но когда я помещаю IP-адрес Virtualbox в это место, я получаю «Неверный URI: имя хоста не может быть проанализировано». Я знаю, что сервер там, страница приветствия появляется, когда я вставляю тот же URL в браузер.
Спасибо, что нашли время, чтобы прочитать это и любую помощь, которую вы могли бы иметь.
Да, есть способ отладки среды внешней виртуальной машины, и я делаю это, используя PHP инструменты расширение для Visual Studio и Xdebug.
Вот следующие шаги.
xdebug_on
команда работает.При этом используются настройки по умолчанию / «из коробки» для данного аппарата, поэтому вам может потребоваться настроить эти значения. Надеюсь это поможет.
Других решений пока нет …