我已经在Ubuntu 9.10上安装了Apache。
我已经安装了一个Web框架(Symfony),它要求服务器能够:
在名为“cache”的文件夹下创build一个目录结构。 如果caching目录不存在,软件(大概是在apache用户下)将尝试创buildcaching文件夹和所需的子目录结构。
外部用户不应该能够访问这个文件夹 – 只有框架库本身才需要
能够在名为log的子目录中创build文件
外部用户不应该能够访问这个文件夹 – 只有框架库本身才需要
我的/ etc / apache2 / sites-enabled / 000默认的文件内容是:
<VirtualHost *:80> ServerName testproject.localhost DocumentRoot "/home/morpheous/work/websites/testproject/web" DirectoryIndex index.php <Directory "/home/morpheous/work/websites/testproject/web"> AllowOverride All Allow from All </Directory> Alias /sf /lib/vendor/symfony/symfony-1.3.2/data/web/sf <Directory "/lib/vendor/symfony/symfony-1.3.2/data/web/sf"> AllowOverride All Allow from All </Directory> </VirtualHost>
目前,当我尝试通过浏览器访问此页面时,我得到一个空白页面。 当我检查错误日志(/var/log/apache2/error.log)时,我看到以下错误:
[Fri Feb 19 14:05:01 2010] [error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'sfCacheException' with message 'Failed to make cache directory "/home/morpheous/work/websites/testproject/cache/frontend/dev/config" while generating cache for configuration file "config/config_handlers.yml".' ....
我相对比较新的Ubuntu(一般的Linux)。 我已经查看了文件夹属性(使用sys admin GUI工具),但是当我尝试将文件夹的组所有权更改为“www-data”(apache2守护程序用户所属的组)时,我发现组在可以取得“caching”文件夹的所有者的组列表中不可用。
更一般地说,我可能有我的testproject目录下的文件夹,我希望apache2守护进程有权访问,但不能被外部用户直接访问 – (例如包含数据库密码或特定下载等的文件),如何以这种方式显式pipe理文件夹的访问?
在我看来,这是一个(相当混乱)的Linux用户/组合以及Apacheconfiguration。 如果有人能够点亮,我将不胜感激
给apache守护进程授予rwr | rwx权限的一般问题,同时禁止外部用户访问该文件夹
如何解决当前允许apache守护进程创buildcaching文件夹(如果需要)和任何所需的子目录/文件以及类似地,在testproject / log文件夹中创build日志文件的问题。
[编辑]
卡尔:我在这里input了我的意见,因为有更好的格式…
当我尝试访问浏览器中的页面时,我现在正在获取493禁止页面。 我检查了Apache日志文件,看到这个错误:
[fri Feb 19 17:23:33 2010] [crit] [client 127.0.0.1](13)Permission denied:/home/morpheous/work/websites/testproject/.htaccess pcfg_openfile:无法检查htaccess文件,确保它是可读
这是web文件夹的属性drwxr-xr-x 16 morpheous morpheous 4096 2010-02-19 00:51 web
我怀疑apache守护进程用户没有访问web文件夹,这是什么导致了这个问题。 在这种情况下,这意味着我将不得不手动将群组所有权(用于读写访问)更改为www-data,以便我希望apache守护进程可以访问的所有文件夹(这很直观,但是我只是想确认它)
如果您在更改文件夹上的组时遇到问题,请确保您是root用户。 除非您是所有者, 并且您是超级用户,否则无法更改文件夹或文件的组。
消除pipe理GUI和打开一个shell。 (terminal,xterm等)
chgrp www-data /home/morpheous/work/websites/testproject chmod 2770 /home/morpheous/work/websites/testproject # Set mode rwxrws--- the '2' sets the 's' sticky bit, # which causes all files and folders created in "project" # to inherit the same group.
(这可能不是configuration这个特定的应用程序的最佳方式,但我认为这是一个合理的猜测,我也build议移动你的主目录…这只是使您的个人主目录保持安全,同时给networking服务器的访问权限写入其中。)
至于保持Apache在这些目录中提供文件,那已经完成了……您的文档根目录被定义为项目/网页。 这只允许访问文件在这一点和下面…日志和caching文件夹已被排除在外。