![](/img/trans.png)
[英]Can't write image data to path in laravel 8 using the Intervention library
[英]can't write image data to path in laravel using the Intervention library
我將 Laravel 4.2 與 Intervention 庫一起使用,我不確定為什么在其他一切似乎都正確時會遇到這個問題。 這是代碼:
Route::post('test',function()
{
// check if files was sent
if(Input::hasFile('file'))
{
$image = Input::file('file');
$filename = date('Y-m-d-H:i:s').'-'.$image->getClientOriginalName();
$path = public_path('images/cars/'.$filename);
Image::make($image->getRealPath())->resize(468,249)->save($path);
} else {
return Response::json(array('test'=>false));
}
});
我收到的錯誤是:
Intervention\Image\Exception\NotWritableException 無法將圖像數據寫入路徑(C:\xampp\htdocs\jacars_project\public/images/cars/2014-08-26-03:41:39-icon_2034.png)。
在此先感謝您幫助我解決問題
您可以檢查目錄是否存在,如果沒有這樣的目錄,則創建它:
if (!file_exists($save_path)) {
mkdir($save_path, 666, true);
}
只需更改此:
$path = public_path('images/cars/'.$filename);
對此:
$path = 'images/cars/' . $filename;
另外,請確保目標path/location
是可寫的,具有寫權限。
通過首先創建我將放置圖像文件的目錄為我解決了這個問題。
例如:首先創建public/images/cars/
目錄。 然后您現在可以將圖像保存在那里。
PS:但如果你想動態創建文件夾,我不知道該怎么做。
經過這么多小時,我找到了 Centos 8 的解決方案(但它也適用於其他人)。 我們需要為將保存要上傳的圖像的文件夾分配必要的權限。 而使用“chmod”命令是不夠的,還需要使用
httpd_sys_content_t
和
httpd_sys_rw_content_t
folder and execute the following commands to give permissions to the folder:例如:從命令行我們進入我們的 Laravel 項目的文件夾,我們進入文件夾並執行以下命令來授予文件夾的權限:
chown –R apache: images
chmod –R 755 images
systemctl restart httpd
chcon -R -t httpd_sys_content_t images
chcon -R -t httpd_sys_rw_content_t images
systemctl restart httpd
注意:( “chown -R apache: images”在其他 Linux 版本中替換其等效的“chown -R www-data:images”)。
如果您尚未創建路徑的文件夾,您將收到該錯誤。 您需要先創建它。
如果您使用的是 Ubuntu -> sudo chmod -R 777 public
就我而言,它沒有文件夾的權限, chmod 和 755 完成了這項工作。
chmod -R 755
如果您在共享主機上,請不要使用 public_path() 輔助函數指向上傳位置。 簡單地放置位置,您就可以開始了:
更改 public_path(UPLOAD_PATH)
只到 UPLOAD_PATH
問題是權限問題,只要進入你的目錄,給它讀寫權限,你的問題就解決了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.