【问题标题】:Apache won't start with spaces in pathname in httpd.conf (even with quotes)Apache 不会以 httpd.conf 中路径名中的空格开头(即使带有引号)
【发布时间】:2013-02-06 01:47:24
【问题描述】:

问题

如果虚拟主机配置中的路径名中有空格,则 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>

【问题讨论】:

  • 我知道这是旧的,但我只想说你的方法在 Linux 上对我来说很好。
  • 重命名项目文件夹? (是的,linux 不是 windows...)

标签: apache wampserver httpd.conf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    你可以在命令行中使用dir /x查看DOS路径。

    【讨论】:

      【解决方案3】:

      目录路径用双引号括起来,例如:

      DocumentRoot  "C:\Users\Touhid Mia\OneDrive\xxx"
      <Directory  "C:\Users\Touhid Mia\OneDrive\xxxxx">
      

      【讨论】:

      • 这是什么意思?
      【解决方案4】:

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

      您需要来自 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,它的根文件夹“www”位于 UniServerZ 文件夹中。每次更新服务器时,我都会删除整个 UniServerZ 文件夹并运行 .bat 文件以重新创建连接文件夹“test”。

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 成功了!如果允许,我会在 10 分钟内接受。
        • 好吧,我说得太早了。 Apache 确实启动了,但是当我尝试在浏览器中拉起网站时,我得到了 403。
        猜你喜欢
        • 1970-01-01
        • 2019-08-21
        • 2020-06-21
        • 1970-01-01
        • 2014-10-15
        • 2014-03-01
        • 1970-01-01
        • 2011-05-06
        • 2021-08-26
        相关资源
        最近更新 更多