【问题标题】:PHP copy() method doesn't work on server (NGINX)PHP copy() 方法在服务器(NGINX)上不起作用
【发布时间】:2015-11-05 23:34:15
【问题描述】:

我正在构建一个博客,我需要在我的服务器上存储图像。图片带有完整的 URL,当我发布文章时,它会使用 copy() 方法保存图片。

在本地一切正常,但在我的服务器上没有任何变化。但是 allow_url_fopen 在 php.ini 文件中设置为 On

奇怪的是服务器更改了预期保存的文件的名称,但它没有存储它。例如我想保存这张图片:http://s.tfou.fr/mmdia/i/03/8/bob-l-eponge-10479038eajyx.png。我把这个 URL 放在我的表单中,我提交它,然后服务器按预期保存这个路径:content/images/563b62825ab53.png...但是路径返回 404,图像无处。

这是我的 php 代码(封面是我放置图片 URL 的字段的名称):

$extension = explode('.', $_POST['cover']);
$uniq = uniqid();
$path = 'content/images/'.$uniq.'.'.$extension[count($extension)-1];
copy($_POST['cover'], $path);
$cover = $path;

这是我在服务器上的内容,其中现有图像是从我的仓库中提取的(来自我的本地,一切都运行良好):

total 1328
-rw-r--r-- 1 root www-data 105331 Nov  5 14:59 563b578484ea1.jpg
-rw-r--r-- 1 root www-data 311132 Nov  5 14:59 563b57cf1db89.png
-rw-r--r-- 1 root www-data 132129 Nov  5 14:59 563b5a33d6c3b.jpg
-rw-r--r-- 1 root www-data 180274 Nov  5 14:59 563b5bbfe649b.jpeg
-rw-r--r-- 1 root www-data 283665 Nov  5 14:59 563b5c068e0bf.jpg
-rw-r--r-- 1 root www-data 311132 Nov  5 14:57 563b5fb480e73.png

但是如果我删除所有并尝试让服务器复制它自己的图片,什么都不会出现...这里是包含图片的文件夹的权限:

drwxr-sr-x 3 root www-data 4096 Nov  5 14:57 content

其中包含:

drwxr-sr-x 2 root www-data 4096 Nov  5 14:59 images

什么都不包含...

我不知道这是服务器问题还是我的 php.ini 中缺少或其他原因。

【问题讨论】:

  • 您需要为运行 nginx 的用户/组授予写权限(它不应该是 root)。 chmod g+w images 应该做你想做的假设 nginx 在你的系统上作为组 www-data 运行
  • 我真的不考虑这个!非常感谢它现在运行良好。智能高效。

标签: php image nginx server


【解决方案1】:

您需要向运行 nginx 的用户/组授予写入权限(它不应该是 root)。 chmod g+w 图像应该做你想做的假设 nginx 在你的系统上作为组 www-data 运行

【讨论】:

    猜你喜欢
    • 2016-01-28
    • 2016-05-08
    • 2013-12-26
    • 2012-01-12
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多