【发布时间】: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 运行 -
我真的不考虑这个!非常感谢它现在运行良好。智能高效。