【问题标题】:How to solve a Linux permission issue for opencart如何解决 opencart 的 Linux 权限问题
【发布时间】:2014-12-20 12:31:25
【问题描述】:

我曾使用 subversion 恢复我的 PHP Opencart 项目,但我遇到了权限问题(示例如下:

警告:imagejpeg():无法打开“/var/www/html/opencart/image/cache/data/pavblog/img-blog-620x300w.jpg”进行写作:/var/www/html 中的权限被拒绝/opencart/system/library/image.php 第 45 行

警告:imagejpeg():无法打开“/var/www/html/opencart/image/cache/data/pavblog/img-blog-250x250w.jpg”进行写作:/var/www/html 中的权限被拒绝/opencart/system/library/image.php 第 45 行

警告:imagejpeg():无法打开...

我执行了以下命令来为这些文件夹添加权限,但我仍然在我的网站上收到警告消息。

sudo chmod 777 /var/www/html/opencart
cd /var/www/html/opencart 
sudo chmod 777 image/ 
sudo chmod 777 image/cache/ 
sudo chmod 777 image/data/ 
sudo chmod 777 system/cache/ 
sudo chmod 777 system/logs/ 
sudo chmod 777 download/ 
sudo chmod 777 config.php
sudo chmod 777 admin/config.php

我该如何解决这个问题?

【问题讨论】:

  • 如果您在其中一个文件夹中执行ls -al,则会显示为文件所有者:root、www-data、apache 还是其他人?
  • 所有者是所有文件夹和文件的根用户。
  • 好吧...这几乎肯定是真正的问题。我将把你推荐给unix.stackexchange.com/a/30888/47521,因为这将更好地描述正确的文件权限
  • 谢谢,问题解决了!

标签: php opencart


【解决方案1】:

要修复您的权限,您需要采取两个不同的步骤:

  1. 向适当的实体授予权限。由于您在 /var/www/html 中,我猜正确的用户是“apache”。

    # Grants permissions to apache
    sudo chown apache:apache -R /var/www/html/opencart
    
    # If that doesn't work, perhaps try www-data
    sudo chown www-data:www-data -R /var/www/html/opencart
    
  2. 正确设置文件和文件夹的权限(文件有执行权限会很危险)

    # Sets directory permissions to 755 (rwxr-xr-x)
    sudo find /var/www/html/opencart -type d -exec chmod 755 {} \;
    
    # Sets file permissions to 644 (rw-r--r--)
    sudo find /var/www/html/opencart -type f -exec chmod 644 {} \;
    

【讨论】:

【解决方案2】:

您需要递归地应用权限。试试

sudo chmod -R 777 image/cache/

【讨论】:

  • 您对使用递归很有意见,但我真的对授予任何人可执行权限持怀疑态度。
  • 同意,我认为永远不应该使用 777,只要按照你的例子。先尝试 644,如果不起作用,再尝试 755。 (在不了解完整设置的情况下很难说出您需要什么)