【问题标题】:No public_html access没有 public_html 访问权限
【发布时间】:2020-04-05 12:20:51
【问题描述】:

我是 Apache 的新手,但我看到一些与此列表类似的问题,希望您能提供帮助。

我只想在我的 Ubuntu 18.04 LTS (Asus VivoBook S15) 下设置一个基本的本地 LAMP 系统来测试一个网站,在我的商业 ISP 主机上使用该版本之前我必须修改该网站。

基本安装顺利(Apache/2.4.29,PHP 7.2),可以通过 url localhost 从 var/www/html 文件夹处理 html 和 php。然后我做了以下设置 public_html 访问:

i) 在 /etc/apache2/apache2.conf 中添加这一行:

ServerName localhost:80

ii) 激活 UserDir 模块 (sudo a2enmod userdir) 并编辑文件 /etc/apache2/mods-enabled/userdir.conf 如下:

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled root

    <Directory /home/*/public_html>
 #      AllowOverride FileInfo AuthConfig Limit Indexes
    AllowOverride All
 #      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Options ExecCGI Indexes MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        Require method GET POST OPTIONS
    </Directory>
</IfModule>

iii) 激活默认虚拟用户目录 (sudo a2ensite 000-default.conf) 并编辑文件 /etc/apache2/sites-enabled/000-default.conf 如下:

 # Global configuration
    ServerName localhost
 # without port according to recommendation found on the web

和

#ServerAdmin webmaster@localhost
ServerAdmin john@john-VivoBook
#DocumentRoot /var/www/html
DocumentRoot /home/john/public_html

iv) 在我的主目录 (/home/john) 下创建 public_html 目录,所有权为 john:john,权限为 755(也尝试使用 777),并添加了我的 index.html 和 index.php 文件

v) 重启 Apache (sudo apache2ctl restart)

vi) 将我的 Firefox 浏览器配置为不将 www 添加到 url。

当我尝试访问 URL“localhost”时,我得到一个空白屏幕,而使用“localhost/public_html”、“localhost/public_html/index.html”或“localhost/public_html/index.php”我收到消息:

Not Found
The requested URL was not found on this server.
Apache/2.4.29 (Ubuntu) Server at localhost Port 80

日志文件/var/log/apache2/error.log中没有错误

日志文件 /var/log/apache2/access 日志的尾部说:

127.0.0.1 - - [05/Apr/2020:13:24:44 +0200] "GET /public_html HTTP/1.1" 404 488 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:74.0) Gecko/20100101 Firefox/74.0"
127.0.0.1 - - [05/Apr/2020:13:26:41 +0200] "GET /public_html/index.html HTTP/1.1" 404 488 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:74.0) Gecko/20100101 Firefox/74.0"
127.0.0.1 - - [05/Apr/2020:13:27:29 +0200] "GET /public_html/index.php HTTP/1.1" 404 488 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:74.0) Gecko/20100101 Firefox/74.0"

日志文件 /var/log/apache2/other_vhosts_access.log 不存在。

我做错了什么?

谢谢和最好的问候,约翰

【问题讨论】:

  • 您应该更新您的问题以指定您的问题和预期结果。

标签: apache ubuntu public-html


【解决方案1】:

如果你想使用 'userdir' 功能,你应该只安装 apache2 并启用 'userdir'。您不必更改 DocumentRoot。

sudo apt install apache2

sudo a2enmod userdir

sudo systemctl restart apache2

现在,切换到用户(在你的例子中是 john)

mkdir /home/john/public_html

echo 'hello' >> index.html

And you can now access index.html using "http://localhost/~john/index.html"

如果将 DocumentRoot 更改为 /home/john/public_html,则应通过“http://localhost/index.html”访问 html 页面,因为目录 (/home/john/public_html) 已经是 Root。


评论后更新

如果您希望 php 使用 apache2 用户目录功能。

首先,安装php环境。

  1. sudo apt install php7.3

  2. sudo a2enmod php7.3

第二,

sudo vim /etc/apache2/mods-enabled/php7.3.conf

Comment below block to re-enable PHP in user directories.

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

三、重启apache2服务。

sudo systemctl restart apache2

您应该通过http://localhost/~john/index.php 看到页面运行良好

【讨论】:

  • 非常感谢迈克尔 - 实际上localhost/index.html 工作正常。但是localhost/index.php 更改为 www.localhost/index.php(尽管我原则上为 Firefox 禁用了它)并产生一个空白屏幕,而localhost 也产生一个空白屏幕(不添加 www)。快到了,最后一公里怎么走?
  • 我将 /etc/apache2/mods-available/dir.conf 设置为优先考虑 index.php 但是当我更改为对 index.html 的偏好时,没有区别,不会自动调用文档根目录。
  • 仍然希望有人能在这方面提供帮助。我想知道 PHP 包是否有问题,也许可以通过 .htaccess 修复?同时,通过将 var/www/html 的所有者更改为 john:john,在 home/john 中创建指向它的符号链接,并将链接的所有者更改为 john:john,我得到了一个令人满意的替代结果。但这有用用户数据填充我的根分区的缺点。奇怪的是使用public_html的所谓默认选项在实践中设置起来这么复杂??!!
  • 这是 Firefox 的问题。我安装了 Opera,一切正常。有什么想法吗?
  • @user13228110 这是 Firefox 中的默认安全功能。仅供参考support.mozilla.org/en-US/questions/1233981
【解决方案2】:

我现在不确定 PHP 在 Opera 下是否部分正常,因为我的 index.php 代码非常短,我很可能将列表误认为是输出。无论如何,我将opera-stable 升级到版本67.0.3575.137(请记住,我在Ubuntu 18.04 LTS 和PHP 版本7.2.24 下运行Apache/2.4.29),包括http://localhost 在内的所有php 文件然后显示列表而不是执行.

[抱歉,我努力了半个小时,试图在代码中显示“尖锐”(注释)符号和初始三角括号,但没有成功,所以我在没有一些代码的情况下进行缩写。]

然后我做了以下两个步骤(均取自Apache shows php code instead of executing):

  • 编辑/etc/apache2/mods-enabled/php7.2.conf,按照注释行“默认禁用在用户目录中运行PHP脚本”后的说明注释掉五行:

此时http://localhost 工作,但直接调用 php 文件仍然只产生列表。

  • 编辑 /etc/apache2/mods-enabled/mime.conf 并在以下两行注释之后:

注释:AddType 允许您添加或覆盖 MIME 配置

注释:特定文件类型的文件 mime.types。

添加以下行:

AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

通过这两项更改,我的本地基于 php 的网站似乎可以在 Opera 和 Firefox 75.0 64 位(之前为 http://localhost 和显式调用 php 文件的空白屏幕)上正常工作。

【讨论】:

    猜你喜欢
    • 2013-08-07
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多