无法配置 Apache 以使 Web 应用程序能够访问 DocumentRoot 之外的文件夹
Trouble configuring Apache to make web application be able to access folder outside DocumentRoot
所以在这里搜索之后,我找到了如何做我想做的事,但我有两个环境,一个可以工作,另一个不能,我不明白为什么。
我们将工作环境称为A,将不工作的环境称为B。
在 A 中,我要访问的文件夹在 A 本身(托管 Apache 的服务器)中,只是位于 DocumentRoot 之外的不同文件夹结构中。
所以我的 httpd.conf 文件中有以下内容:
Alias /folder/ "C:/folder/"
<Directory "C:/folder/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
为了确保它在 A 中工作,我有一个 PHP 脚本生成一个文本文件并将其保存在该文件夹中。它没有问题。
在 B 中,我要访问的文件夹在另一台服务器 (A) 中,该文件夹在 B 中映射为 "P:" 单元(我可以通过资源管理器毫无问题地查看和访问它)。我在 httpd.conf 文件中有以下内容:
Alias /folder/ "P:/"
<Directory "P:/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
当我尝试使用 httpd.conf 中的上述块在 B 中重新启动 apache 服务时,我收到一条错误消息(Windows 无法在本地计算机上启动 Apache2.4... ) 但 Apache 的 error.log 文件中没有错误消息。当我删除那个块时,我可以毫无问题地重新启动它。
提前致谢,如果我不够清楚,抱歉,英语不是我的母语。
编辑: 显然你不能在 httpd.conf 文件中使用映射单位。我尝试使用如下所示的完整地址,现在 Apache 可以无错误地重新启动,但我无法通过所需文件夹中的 PHP 脚本生成我的 .txt 文件。
Alias /folder/ "\10.76.4.60/folder/"
<Directory "\10.76.4.60/folder/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
问题已通过将 Apache 进程设置为使用可以访问映射文件夹的特定用户启动来解决。默认情况下,进程由用户 "SYSTEM" 启动。由于服务器 运行 在 Windows 上,这可以通过管理工具服务 (mmc.exe) 完成。
完成此操作并重置 Apache 后,我可以执行所需的操作,即通过网络服务器中的一些脚本 运行 将文件保存在所需的映射文件夹中。
此外,也无需在 httpd.conf 文件中放入任何内容。
所以在这里搜索之后,我找到了如何做我想做的事,但我有两个环境,一个可以工作,另一个不能,我不明白为什么。
我们将工作环境称为A,将不工作的环境称为B。
在 A 中,我要访问的文件夹在 A 本身(托管 Apache 的服务器)中,只是位于 DocumentRoot 之外的不同文件夹结构中。 所以我的 httpd.conf 文件中有以下内容:
Alias /folder/ "C:/folder/"
<Directory "C:/folder/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
为了确保它在 A 中工作,我有一个 PHP 脚本生成一个文本文件并将其保存在该文件夹中。它没有问题。
在 B 中,我要访问的文件夹在另一台服务器 (A) 中,该文件夹在 B 中映射为 "P:" 单元(我可以通过资源管理器毫无问题地查看和访问它)。我在 httpd.conf 文件中有以下内容:
Alias /folder/ "P:/"
<Directory "P:/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
当我尝试使用 httpd.conf 中的上述块在 B 中重新启动 apache 服务时,我收到一条错误消息(Windows 无法在本地计算机上启动 Apache2.4... ) 但 Apache 的 error.log 文件中没有错误消息。当我删除那个块时,我可以毫无问题地重新启动它。
提前致谢,如果我不够清楚,抱歉,英语不是我的母语。
编辑: 显然你不能在 httpd.conf 文件中使用映射单位。我尝试使用如下所示的完整地址,现在 Apache 可以无错误地重新启动,但我无法通过所需文件夹中的 PHP 脚本生成我的 .txt 文件。
Alias /folder/ "\10.76.4.60/folder/"
<Directory "\10.76.4.60/folder/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
问题已通过将 Apache 进程设置为使用可以访问映射文件夹的特定用户启动来解决。默认情况下,进程由用户 "SYSTEM" 启动。由于服务器 运行 在 Windows 上,这可以通过管理工具服务 (mmc.exe) 完成。
完成此操作并重置 Apache 后,我可以执行所需的操作,即通过网络服务器中的一些脚本 运行 将文件保存在所需的映射文件夹中。
此外,也无需在 httpd.conf 文件中放入任何内容。