我已经安装了 Ubuntu 14.04。
DocumentRoot 是/var/www/html
当我输入我的 URL 地址时,它工作正常:我的测试文件显示出来。当我尝试在和下安装的应用程序时/app1
,/app2
它们都工作正常。(/var/www/app1
,和/var/www/app2
)。具体来说,在我的浏览器中,我可以转到我的<ip address>/app1
,并且应用程序可以运行,与 一样<ip address>/app2
。
现在,我在/app3
( ) 下安装了另一个应用程序,当我尝试在浏览器中访问它时,它一直说:找不到/var/www/app3
请求的 url 。/app3
我将权限和所有权与我的其他应用程序进行了比较,甚至删除了 app3 文件并只放入我自己的 index.html 文件,但仍然说无法找到。
但是,当我将 更改为 时DocumentRoot
,/var/www/app3
应用程序运行正常。/app3
顺便说一下,是 DokuWiki。我在那里发过帖子,但没有人回复。我不希望它成为我的文档根目录。
这是为什么?为什么我的其他应用程序(app1 和 app2)可以正常工作,而 app3 却找不到?
该结构如下所示/var/www
:
drwxr-x--x 10 root www-data 4096 May 23 07:40 app1
drwxrwxr-x 7 root root 4096 Mar 19 15:29 app3
drwxrwx--x 2 root www-data 4096 May 21 16:45 html
drwxr-x--- 13 root www-data 4096 May 17 10:00 app2
drwxr-xr-x 2 root www-data 4096 May 23 07:47 test
因此,它可以再次在我的浏览器中/app1
运行/app2
。/app3
并/test
说无法找到它。
其内部/test
结构如下:
-rw-r--r-- 1 www-data root 108 May 23 07:47 index.html
$ ls -l app3
drwxrwxr-x 2 root root 4096 Mar 19 15:29 bin
drwxrwxr-x 2 root root 4096 Mar 19 15:29 conf
-rw-rw-r-- 1 root root 18092 Mar 19 15:29 COPYING
drwxrwxr-x 12 root root 4096 Mar 19 15:29 data
-rw-rw-r-- 1 root root 182 Mar 19 15:29 index.php
...
我之前也尝试过将 www-data 全部分组。在有效的目录中
$ ls -l app1
drwx------ 22 root www-data 4096 May 20 17:11 addons
-rw-r--r-- 1 root root 639533 May 23 07:40 app.html
drwx------ 6 root www-data 4096 May 20 17:11 css
drwx------ 4 root www-data 4096 May 20 17:12 images
...
如果我直接app.html
在浏览器中访问,则此方法有效。
$ ls -l app2
drwxr-x--- 21 root www-data 4096 May 17 09:59 3rdparty
drwxr-x--- 21 www-data www-data 4096 May 17 09:59 apps
drwxr-x--- 2 root www-data 4096 May 6 14:34 assets
-rw-r----- 1 root www-data 477 Apr 23 15:57 AUTHORS
drwxr-x--- 2 www-data www-data 4096 May 17 10:12 config
-rw-r----- 1 root www-data 1941 Apr 23 15:57 console.php
-rw-r----- 1 root www-data 34520 Apr 23 15:57 COPYING-AGPL
drwxr-x--- 19 root www-data 4096 May 17 10:00 core
-rw-r----- 1 root www-data 4170 Apr 23 15:57 cron.php
drwxr-x--- 4 www-data www-data 4096 May 17 21:21 data
-rw-r----- 1 root www-data 23751 Apr 23 15:57 db_structure.xml
-rw-r----- 1 root www-data 179 Apr 23 15:57 index.html
-rw-r----- 1 root www-data 1792 Apr 23 15:57 index.php
...
index.html
只是重定向到index.php
$ ls -l html
-rw-rw---- 1 root www-data 119 May 21 13:00 index.html
这是该命令的结果grep -R app /etc/apache2/{sites,conf}-enabled
:
/etc/apache2/sites-enabled/000-default.conf: # specifies what hostname must appear in the request's Host: header to
/etc/apache2/sites-enabled/default-ssl.conf: # when the CA certificates are directly appended to the server
/etc/apache2/sites-enabled/default-ssl.conf: # approach is that mod_ssl sends the close notify alert but doesn't wait for
/etc/apache2/sites-enabled/default-ssl.conf: # approach you can use one of the following variables:
/etc/apache2/sites-enabled/default-ssl.conf: # this when you receive I/O errors because of the standard approach where
/etc/apache2/conf-enabled/localized-error-pages.conf:# includes to substitute the appropriate text.
/etc/apache2/conf-enabled/localized-error-pages.conf:# You can modify the messages' appearance without changing any of the
/etc/apache2/conf-enabled/security.conf:# This currently breaks the configurations that come with some web application
/etc/apache2/conf-enabled/phpmyadmin.conf: AddType application/x-httpd-php .php
答案1
我的所有应用程序都必须放在 DocumentRoot 中,然后它们才能运行。
令我感到困惑的是,有 2 个不在 DocumentRoot 中的应用程序仍然能运行,而且可以通过我的浏览器访问。
答案2
看起来你的权限可能被填满了。我建议这样做
chown -R root:www-data app3 test
这会将 app3 和 test 中所有文件和文件夹的所有者和组更改为所有者 = root 和组 = www-data。
希望这能为您解决问题。