为什么 Apache2 无法在 /var/www/html/ 之外查找 PHP 文件?

为什么 Apache2 无法在 /var/www/html/ 之外查找 PHP 文件?

我刚刚开始学习 PHP、MySql 以及它与前端开发的关系。在学习过程中,我发现除非 PHP 文件位于 /var/www/html 目录中,否则我无法执行它。我从 askubuntu 等多个来源找到了这个解决方案,但始终找不到原因。那么,这是否意味着 PHP 文件必须始终位于这个特定目录中?我可以做些什么来使 PHP 文件(例如,我的 Documents 文件夹)成功运行,而不是被 Mozilla 标记为“保存”?请帮忙。

答案1

因为没有这样配置,所以默认情况下 Apache 将仅为/var/www/html目录内的 php 文件提供服务。

您可以将 Apache 设置为查看系统内任何位置的内容,为了实现这样的事情,您需要更改 Apache 设置,它们大多位于/etc/apache2

请注意,这仅适用于 Ubuntu 14.04 LTS 及更新版本。

在我的 Ubuntu 14.04 LTS 中,文档根目录设置为/var/www/html。它在以下文件中配置:

/etc/apache2/sites-available/000-default.conf

所以只要做一个

sudo nano /etc/apache2/sites-available/000-default.conf

并将以下行更改为您想要的内容:

DocumentRoot /var/www/html

也做一个

sudo nano /etc/apache2/apache2.conf

并找到这个

<Directory /var/www/html/>    Options Indexes FollowSymLinks  AllowOverride None  Require all granted
</Directory>

并更改/var/www/html为您的首选目录

并保存。

保存更改后,只需重新启动 apache2 网络服务器即可完成:)

sudo service apache2 restart 


如果您更喜欢图形文本编辑器,那么您可以用sudo nano替换gksu gedit

取自:https://stackoverflow.com/a/23175981

答案2

php 文件无法在文档根目录之外打开的原因是安全. Web 服务器总是局限于某个文件夹及其子文件夹。

您可以设置 apache 查看几个不同的文件夹,具体取决于 url、喜欢http://localhosthttp://someother.localhost指向不同的文件夹。
为此,首先您需要编辑 000-defailt.conf,更改如下:

ServerName  localhost
ServerAlias localhost

然后将 000-default.conf 复制到 001-someother.conf 并进行如下编辑:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
    DocumentRoot /home/leonid/Web/SomeotherRoot
    ServerName  someother.localhost
    ServerAlias someother.localhost
    <Directory "/home/leonid/Web/SomeotherRoot">
      AllowOverride All
      Require local
      # ^ this will limit connections to only local
    </Directory>
    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    LogLevel error
</VirtualHost>

之后你需要让someother.localhost解析为服务器ip,编辑/etc/hosts:

127.0.0.1   localhost   *.localhost
...other lines

最后,您需要通过以下方式启用新的配置文件:

sudo a2ensite 001-someother.conf
sudo systemctl reload apache2

注意:以上示例仅适用于本地站点,只能在本地访问。
我编写了脚本,只需单击几下即可创建此类配置,但最好在使用脚本之前先了解其操作方式。Github

相关内容