我正在构建一个博客,我需要在我的服务器上存储图像。图像以完整的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代码(封面是我放置图片网址的字段的名称):
$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或其他内容。
答案 0 :(得分:1)
您需要向运行nginx的用户/组授予写入权限(它不应该是root用户)。假设nginx在您的系统上作为组www-data运行,chmod g + w图像应该做你想要的。