2016-01-25 94 views
0

我使用DOMPDF生成pdf。Laravel 5 DOMPDF imagepng(.png):無法打開流:權限被拒絕

這裏是我的pdf.blade.php:

<img src="{{ public_path() . '/images/logo.png' }}" id="logo" /> 
<table class="order_confirmation"> 
    <tbody> 
     <tr> 
      <th>Company name</th> 
      <td>Name</td> 
     </tr> 
     <tr> 
      <th>Email</th> 
      <td>[email protected]</td> 
     </tr> 
    </tbody> 
</table> 

這裏是我的控制器方法:

public function pdf() { 
    $data = array(); 
    $pdf = PDF::loadView('pdf', $data); 
    return $pdf->stream(); 
} 

這裏是錯誤:

ErrorException in class.pdf.php line 4036: imagepng(.png): failed to open stream: Permission denied

而且堆棧跟蹤:

in class.pdf.php line 4036 at HandleExceptions->handleError('2', 'imagepng(.png): failed to open stream: Permission denied', '/Applications/XAMPP/xamppfiles/htdocs/blablacompany/vendor/dompdf/dompdf/lib/class.pdf.php', '4036', array('file' => '/Applications/XAMPP/xamppfiles/htdocs/blablacompany/public/images/logo.png', 'x' => '34.015748031496', 'y' => '606.8742519685', 'w' => '334.5', 'h' => '201', 'byte' => '6', 'img' => 'Resource id #278', 'eight_bit' => false, 'wpx' => '446', 'hpx' => '268', 'tempfile_alpha' => '.png', 'tempfile_plain' => '.png', 'imgalpha' => resource, 'c' => '256', 'allocated_colors' => array('000' => '0', '9598261', '12756008', '9993266', '15848487', '7493443', '12690472', '16309032', '14269479', '5586004', '11637804', '16243240', '8809018', '2169210', '12624680', '15256615', '6638155', '2366072', '5454677', '10256177', '13151271'...

你能幫我嗎?

P.S.

  1. 我也嘗試過url('/ images/logo.png')而不是public_path()。 '/images/logo.png'
  2. 我已經搭配chmod 777存儲廠商也對公共/圖片,但仍然沒有工作...

ErrorException in image_cache.cls.php line 105: file_put_contents(): Filename cannot be empty

UPDATE:

  • 如果我設置chmod 754和return view('pdf') - >圖像不顯示(以及其他頁面正在使用圖像/
  • 如果我設置chmod 754和$pdf = PDF::loadView('pdf', $data); return $pdf->stream();→生成PDF但圖像被撫摸正方形
  • 但如果我設置命令chmod 755和return view('pdf') - >圖像顯示,但..
  • 當我嘗試$pdf = PDF::loadView('pdf', $data); return $pdf->stream();我收到一條錯誤消息:

ErrorException in image_cache.cls.php line 105: file_put_contents(): Filename cannot be empty

+0

檢查此:http://stackoverflow.com/questions/8103860/move-uploaded-file-gives-failed-to-open-stream-permission-denied-error-after –

+0

老實說,我不下MacBook Air:公共myuser $ sudo chmod -R 777 images/- 不工作 MacBook-Air:public myuser $ sudo chmod -R 755 images /不工作 MacBook Air:公共myuser $ sudo chmod -R 754圖像/ - WORKING。現在至少生成pdf,但圖像看起來像撫摸方形..但這可能是另一個問題 – Aleksandrs

回答

0

我想出如何對付它:

  1. pdf生成你應該使用public_path()而不是url('')(例如<img src="{{ public_path() . '/images/somepicture.jpg' }}" id="logo" />
  2. 如果要加載視圖
  3. public_path()將無法​​正常工作return view('yourview');

  4. 只能使用的.jpg,巴紐將無法正常工作

  5. 搭配chmod 755的圖像文件夾

+0

'chmod'選項似乎是一個奇怪的要求,可能與您的配置有關。如果您沒有啓用GD PHP擴展,您將遇到某些圖像格式的問題。我不知道路徑選項,它實際上取決於返回的值,但我猜測'PDF :: loadView()'使用dompdf的'load_html()'方法,因此所有路徑在文件系統上都是相對的。 – BrianS

相關問題