Я установил XAMPP на виртуальный диск и теперь не могу запустить его сервисы. Зачем? - PullRequest
1 голос
/ 03 июня 2010

Описание довольно длинное. Пожалуйста, потратьте некоторое время, чтобы прочитать это. ^:) ^

У меня есть старое PHP-приложение, и я пытаюсь его протестировать и отладить. К сожалению, приложение использует важные данные, поэтому я не могу просто нажать и то и это. Теперь я пытаюсь создать копию приложения на другом компьютере. С этого момента я буду называть компьютер, на котором запущено мое оригинальное PHP-приложение, «Компьютер A», а компьютер, который я собираюсь использовать для запуска копии приложения, - «Компьютер B».

Во избежание проблем с отсутствующими ссылками, поскольку приложение содержит статические пути, такие как изображения или теги, я должен скопировать все файлы и папки, связанные с моим приложением PHP, с компьютера A на тот же путь на компьютере B. К сожалению, только на компьютере B имеет диск C, в то время как компьютер A имеет диск D, а файлы моего приложения PHP находятся в папке «D: \ xampp \ htdocs» на компьютере A.

ОК, теперь мне нужно создать диск D на компьютере B. Сначала я попытался создать второй раздел на компьютере B с помощью PowerQuest Partition Magic 8, но каким-то образом Partition Magic не работает на компьютере B. У меня есть попытался переустановить его, но он все еще не работает. Итак, другой альтернативой является создание виртуального диска. Это то, что я сделал. Я создал виртуальный диск, запустив команду 'subst' в командной строке. Виртуальный диск - это D, он ссылается на каталог «C: \ Virtual».

После того, как у меня есть диск D в компьютере B, я установил там XAMPP. Установка прошла успешно. Теперь у меня также есть «D: \ xampp \ htdocs» на компьютере B. Однако, когда я запускаю службу Apache, MySQL или Filezilla, я получаю сообщение об ошибке «Ошибка 3: система не может найти указанный файл». На компьютере B нет IIS или процесса, использующего порт 80. Что мне делать? Пожалуйста, помогите мне.

Большое спасибо заранее,

Харис

1 Ответ

1 голос
/ 21 января 2011

Надеюсь, это не кросс-постинг, вот так ...

Subst не создает экземпляр монтирования ни в глобальном масштабе, ни внутри системного пользователя / NT Authority, поэтому сервер (apache) не может получить к нему доступ. Apache получает доступ через системную учетную запись и поэтому не может видеть точку монтирования (так называемую).

Исходя из этого: http://msdn.microsoft.com/en-us/library/aa363908%28v=VS.85%29.aspx ... кажется, что вы можете создать экземпляр глобально с помощью win api или, возможно, непосредственно в реестре, используя функцию или метод DefineDosDevice.

Любой способ, которым вы пытаетесь выполнить подстановку, даже используя что-то вроде RunAsSystem, чтобы попытаться применить команду subst в контексте системного пользователя, не даст жизнеспособного результата.

Однако я обнаружил, что при создании DosDevice в реестре у меня есть жизнеспособное монтирование 'subst', которое может использовать apache / mysql / php-win. Вы также можете найти способы сделать это через wmi, vb, c + и т. Д., И я не знаю, является ли (я сомневаюсь) метод реестра таким же, но вот он ...

Пример, я хочу: subst S: C: \ PortableUSB

файл asA.reg ...

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
"S:"="\\??\\C:\\PortableUSB"

Или, в реестре это будет выглядеть так (так что вы можете добавить его вручную) ... Строковое имя «S:» (без кавычек. Используйте предпочитаемый вами DriveLetter, конечно) Значение этой строки - "\ ?? \ C: \ PortableUSB" (без кавычек. Конечно, используйте свой собственный путь)

Требуется перезагрузка. Субстанция постоянна и доступна во всем мире. Я еще не знаю, насколько это надежно, но я до сих пор пользуюсь им с успехом. TwoHawks

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...