我正在構建一個博客,並且需要將圖像存儲在我的服務器上。這些圖像是用完整的URL給出的,當我發佈文章時,它會使用copy()方法保存圖像。PHP copy()方法在服務器上不起作用(NGINX)
在本地所有的作品都很好,但在我的服務器上沒有任何變化。但是,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的形式運行 – Doon
我真的沒有想到這個!非常感謝它,現在運作良好。智能和高效。 –