【问题标题】:Forbidden error coming on delete image on main server,localhost:its working fine在主服务器上删除图像时出现禁止错误,本地主机:它工作正常
【发布时间】:2012-05-22 15:31:23
【问题描述】:

我开发了一个网站。在一个页面上有一个图片库,图片上传完美,但是一旦我删除图片,就会出现这个错误:

*禁止 您无权访问此服务器上的 /fdccms/backend/project_categories/view_image.php。 此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。* 删除图像在 localhost 上运行良好,但我不知道服务器的问题。 在 .htaccess 中,我也包含了 rewriterule:

RewriteRule ^view_image/([^/]*)/?(.*)$ http://fdc-int.com/fdccms/backend/project_categories/view_image.php?id=$1&del=$2

【问题讨论】:

    标签: php html .htaccess


    【解决方案1】:

    检查您的文件夹权限。确保您对该文件夹具有读取、写入和执行权限。 (应该是 777)

    如果是你的.htaccess,试试这个:

    RewriteRule ^view_image/([^/]*)/?(.*) /backend/project_categories/view_image.php?id=$1&del=$2 [L]
    

    因为你说 fdccms 是你的 webroot。

    无论哪种方式,$ 都是不需要的,因为 . 匹配任何字符。

    【讨论】:

    • 对不起,如果这似乎是一个愚蠢的问题,但是由于我是 php 新手,我想问一下您所说的文件夹权限是针对图像文件夹的吗?对吗?......那是 777 但没有结果......我也添加了一个 [L] 但这也不起作用......
    • 您需要检查层次结构中每个文件夹的权限,以确保您可以在目录中写入。
    • 是的...属性是 777...图片很容易上传...但是要删除那个禁止的错误来了
    • 你用什么代码来删除文件?可能是您的网络主机不允许该功能?
    • 我正在使用这个代码:if(isset($_GET['del'])) { //获取图像名称 $img = $_GET['del']; $img = strrchr($img, '/' ); $img = substr($img, 1); $imagefile = substr($img,0); // 从 akhbar_detail 表中删除 $query = "DELETE FROM projectscategories_pic WHERE image = '$img'"; mysql_query($query) 或 die('Error : ' . mysql_error()); @unlink($_GET['del']); / 这会报错。注意上面的输出 *,它在 header() 调用之前 / header("Location: view_image.php?id=$_GET[id]"); } }
    【解决方案2】:

    我猜你的 rewriteRule 有问题。

    可能 ?(.*) 无法按预期工作。 QUERY_STRING 应该自动添加,但有时不会发生。我不确定,如果它不起作用,是否有?在重写目标中。

    所以试试这个:

    RewriteRule ^view_image/([^/]*)/ /backend/project_categories/view_image.php?id=$1&del=%{QUERY_STRING} [L]
    

    【讨论】:

    • 这个请求可以工作:fdc-int.com/fdccms/backend/project_categories/… ?或者你只想要一个内部重定向,而不是你不能使用 http:// 试试这个: RewriteRule ^view_image/([^/]*)/?(.*)$ fdccms/backend/project_categories/view_image.php?id= $1&del=$2 [L] (那么 fdccms 应该在你的 webroot 中)
    • 我的 webroot 中的 fdccms...我这样做了....但没有结果..我几乎尝试了所有...
    • 我还是猜想,你的 .htaccess 有问题。我稍微改变了答案。请检查您的 SQL 注入问题代码(现在就在其中)并检查 $_GET['del'] 是否只删除了正确的文件。空字节在 PHP 中是允许的,但在文件函数中会被忽略。
    • 事实上,在 localhost 中一切正常,我在其他服务器上为其他网站使用的相同代码,它们运行良好,但问题仅出在这台服务器上。
    • 检查 $_GET['del'] 是否有任何值 if (isset($_GET['del']) && $_GET['del'] == '') die('oops,参数在那里,但为空'); -> 你的 RewriteRule 有问题。将您的代码替换为调试代码,它会返回您的值。
    猜你喜欢
    • 2020-03-20
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2019-12-17
    • 2015-05-21
    • 2018-03-07
    • 2015-08-28
    相关资源
    最近更新 更多