PHP copy()方法没有';无法在服务器(NGINX)上工作


PHP copy() method doesn't work on server (NGINX)

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

在本地一切都很好,但在我的服务器上什么都没有改变。但是,在php.ini文件中,allow_url_fopen被设置为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)。假设nginx在您的系统上作为组www数据运行,chmod g+w镜像应该可以执行您想要的操作