5

问题

如果虚拟主机配置中的路径名中有空格,Apache 将不会启动。

通常的解决方案是将路径名用双引号引起来,但这并不能解决问题。

我想在我的路径名中有空格,因此更改为破折号或其他不是真正的选择。

与下面没有空格的非常相同的配置有效。

样本

<VirtualHost *:80>
    DocumentRoot "C:/Users/Patrick/Google Drive/Projects/My Project"
    ServerName local.example.com
    ServerAlias local.example.com
    <Directory "C:/Users/Patrick/Google Drive/Projects/My Project">
    Options Indexes FollowSymLinks ExecCGI Includes
        AllowOverride All
        Order allow,deny
        Allow from all
        <IfModule mod_php5.c>
            php_admin_flag engine on
            # choose the one you want:
            # This is for E_ALL & ~E_STRICT & ~E_DEPRECATED
            # php_admin_value error_reporting 22527
            # This is for E_ERROR
            php_admin_value error_reporting 1
        </IfModule>
    </Directory>
</VirtualHost>
4

5 回答 5

10

你试过 DocumentRoot "C:/Users/Patrick/Google\ Drive/Projects/My\ Project" 吗?

于 2013-02-20T21:35:51.830 回答
1

我通过使用 DOS 8.3 路径让它工作:

c:/users/patric~1/google~1/projec~1/myproj~1

dir /x您可以通过在命令行上使用来查看 DOS 路径。

于 2017-08-26T03:30:52.477 回答
0

将目录路径放在双引号中,例如:

DocumentRoot  "C:\Users\Touhid Mia\OneDrive\xxx"
<Directory  "C:\Users\Touhid Mia\OneDrive\xxxxx">
于 2014-11-28T09:45:55.820 回答
0

如果您仍在寻找解决方案,您可以尝试创建一个联结,让您将根文件夹的内容重新定位到带有空格的路径中。我这样做了,它无缝地工作。

您需要来自 Microsoft 的Junction 。我认为你可以在没有它的情况下创建连接,但它更难。

创建一个apache_root.bat文件以将命令传递给 junction.exe 并在删除联结并需要重新创建它时重用它:

"G:\SysinternalsSuite\junction.exe" "G:\UniServerZ\www\test" "G:\Google Drive\test"
  1. 第一个字符串是 juction.exe 的路径。如果 .bat 文件位于同一文件夹中,我认为您只能编写“junction.exe”;
  2. 第二个字符串是连接文件夹的路径。在我的情况下,这个“测试”文件夹被 创建
  3. 第三个字符串是连接文件夹的来源。在我的情况下,这个“测试”文件夹存在并且有子文件夹。

我使用的是可移植的 Uniform Server,它在 UniServerZ 文件夹中有根文件夹“www”。每次更新服务器时,我都会删除整个 UniServerZ 文件夹并运行 .bat 文件以重新创建连接文件夹“test”。

当然,删除联结时不会删除源文件夹。当心我在您的配置文件中提到的 SymLinks,它们确实会删除源文件夹。我几乎把我的 Windows 搞砸了,删除了一个符号链接。

于 2014-07-03T15:40:42.507 回答
0

当 Dropbox 将我的文件夹名称从 E:\Dropbox 更改为 E:\Dropbox (Completa Content) 时,我遇到了同样的问题,并且在我的文档根目录中它看起来像这样:DocumentRoot E:/Dropbox,当我将其更改为 E: /Dropbox(完整内容),给出了错误。经过几次尝试,我意识到它只是把双引号 DocumentRoot "E:/Dropbox (Completa Content)" 和它的工作原理

于 2020-12-04T19:03:35.210 回答