无法在drupal中访问上传的文件(flv& images)

时间:2011-01-22 08:14:35

标签: drupal file-upload access-denied

我有一个自定义上传字段,其内容类型允许上传flv文件。我的主题中有jw播放器,它为我播放。在我的localhost中一切正常。 但上传后会显示Access Denied or File not found Error.

我检查了文件夹的权限,似乎没问题。直接键入文件的链接也会返回找不到的页面。

有什么问题?可以做些什么? 我尝试使用print $base_url使用绝对网址,并尝试使用print $base_path,这两种方法在localhost中都能很好地工作。

更新:甚至无法访问image_cache的缩略图或任何上传的图片。这有点奇怪。我无法弄清楚这一点。

.htacess在localhost和server中是相同的。但为什么只有服务器我才能访问?我检查了 所有尝试的日志及其show pagenotfound错误。

我的.htaccess文件:

> #
> # Apache/PHP/Drupal settings:
> #
> # Protect files and directories from prying eyes. <FilesMatch
> "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
> Order allow,deny </FilesMatch>
> # Don't show directory listings for URLs which map to a directory. Options
> -Indexes
> 
> 
> 
> # Make Drupal handle any 404 errors. ErrorDocument 404 /index.php
> 
> # Force simple error message for requests for non-existent favicon.ico.
> <Files favicon.ico>   # There is no
> end quote below, for compatibility
> with Apache 1.3.   ErrorDocument 404
> "The requested file favicon.ico was
> not found. </Files>
> 
> # Set the default handler. DirectoryIndex index.php
> 
> # Override PHP settings. More in sites/default/settings.php
> # but the following cannot be changed at runtime.
> 
> # PHP 4, Apache 1. <IfModule mod_php4.c>   php_value
> magic_quotes_gpc                0  
> php_value register_globals            
> 0   php_value session.auto_start      
> 0   php_value mbstring.http_input     
> pass   php_value mbstring.http_output 
> pass   php_value
> mbstring.encoding_translation   0
> </IfModule>
> 
> # PHP 4, Apache 2. <IfModule sapi_apache2.c>   php_value
> magic_quotes_gpc                0  
> php_value register_globals            
> 0   php_value session.auto_start      
> 0   php_value mbstring.http_input     
> pass   php_value mbstring.http_output 
> pass   php_value
> mbstring.encoding_translation   0
> </IfModule>
> 
> # PHP 5, Apache 1 and 2. <IfModule mod_php5.c>   php_value
> magic_quotes_gpc                0  
> php_value register_globals            
> 0   php_value session.auto_start      
> 0   php_value mbstring.http_input     
> pass   php_value mbstring.http_output 
> pass   php_value
> mbstring.encoding_translation   0
> </IfModule>
> 
> # Requires mod_expires to be enabled. <IfModule mod_expires.c>   # Enable
> expirations.   ExpiresActive On
> 
>   # Cache all files for 2 weeks after
> access (A).   ExpiresDefault A1209600
> 
>   <FilesMatch \.php$>
>     # Do not allow PHP scripts to be cached unless they explicitly send
> cache
>     # headers themselves. Otherwise all scripts would have to overwrite
> the
>     # headers set by mod_expires if they want another caching behavior.
> This may
>     # fail if an error occurs early in the bootstrap process, and it may
> cause
>     # problems if a non-Drupal PHP file is installed in a subdirectory.
>     ExpiresActive Off   </FilesMatch> </IfModule>
> 
> # Various rewrite rules. <IfModule mod_rewrite.c>   RewriteEngine on
> 
>   # If your site can be accessed both
> with and without the 'www.' prefix,
> you   # can use one of the following
> settings to redirect users to your
> preferred   # URL, either WITH or
> WITHOUT the 'www.' prefix. Choose ONLY
> one option:   #   # To redirect all
> users to access the site WITH the
> 'www.' prefix,   #
> (http://example.com/... will be
> redirected to
> http://www.example.com/...)   # adapt
> and uncomment the following:   #
> RewriteCond %{HTTP_HOST}
> ^example\.com$ [NC]   # RewriteRule
> ^(.*)$ http://www.example.com/$1
> [L,R=301]   #   # To redirect all
> users to access the site WITHOUT the
> 'www.' prefix,   #
> (http://www.example.com/... will be
> redirected to http://example.com/...) 
> # uncomment and adapt the following:   # RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]   #
> RewriteRule ^(.*)$
> http://example.com/$1 [L,R=301]
> 
>   # Modify the RewriteBase if you are
> using Drupal in a subdirectory or in a
> # VirtualDocumentRoot and the rewrite rules are not working properly.   #
> For example if your site is at
> http://example.com/drupal uncomment
> and   # modify the following line:   #
> RewriteBase /drupal   #   # If your
> site is running in a
> VirtualDocumentRoot at
> http://example.com/,   # uncomment the
> following line:   # RewriteBase /
> 
>   # Rewrite URLs of the form 'x' to
> the form 'index.php?q=x'.  
> RewriteCond %{REQUEST_FILENAME} !-f  
> RewriteCond %{REQUEST_FILENAME} !-d  
> RewriteCond %{REQUEST_URI}
> !=/favicon.ico   RewriteRule ^(.*)$
> index.php?q=$1 [L,QSA] </IfModule>
> 
> # $Id: .htaccess,v 1.90.2.5 2010/02/02 07:25:22 dries Exp $

.htacess在文件目录中:

> SetHandler
> Drupal_Security_Do_Not_Remove_See_SA_2006_006
> Options None Options -FollowSymLinks

3 个答案:

答案 0 :(得分:0)

检查以确保您将.htaccess文件上传到Drupal的根目录。

您的网站是在域的根目录还是在子目录中运行?如果它在子目录中,您可能需要在.htaccess文件中设置RewriteBase。

检查管理员&gt;报告&gt;状态报告页面,以查看是否有任何错误消息。

检查管理员&gt;报告&gt;任何其他错误的最近日志条目

答案 1 :(得分:0)

你的文件目录中应该有另一个htaccess。此文件中设置的任何权限都将覆盖在根级别设置的权限。作为替代方案,您可以将Drupal设置为处理您的文件(私有文件系统选项)。请注意,将文件设置为私有会对性能产生影响。

答案 2 :(得分:0)

除了上述设置 / sites / default 目录之外,555的权限应该修复为404或403.

我也错过了