簡體   English   中英

無法使用干預庫將圖像數據寫入 laravel 中的路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM