Laravel 5 DOMPDF imagepng(.png):无法打开流:权限被拒绝


Laravel 5 DOMPDF imagepng(.png): failed to open stream: Permission denied

我正在使用DOMPDF来生成pdf。

这是我的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>test@email.com</td>
        </tr>
    </tbody>
</table>

这是我的控制器方法:

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

这是错误:

类中的错误异常.pdf.php第 4036 行:图像png(.png):失败 打开流:权限被拒绝

还有一个堆栈跟踪:

在类中.pdf.php 第 4036 行位于 HandleExceptions->handleError('2', "图像PNG(.png):无法打开流:权限被拒绝", '/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' => '资源 ID #278', 'eight_bit' => 假, 'WPX' => '446', 'HPX' => '268', 'tempfile_alpha' => '.png', 'tempfile_plain' => '.png', 'imgalpha' => 资源, '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"...

你能帮帮我吗?

附言

  1. 我也尝试了url('/images/logo.png')而不是public_path()。'/图像/徽标.png'
  2. 我在存储、供应商和公共/图像上有 chmod 777,但仍然无法正常工作......

image_cache.cls.php第 105 行中的错误异常:file_put_contents(): 文件名不能为空

更新:

  • 如果我设置 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();时,我收到一条错误消息:

image_cache.cls.php第 105 行中的错误异常:file_put_contents(): 文件名不能为空

我想出了如何处理它:

  1. 对于 PDF 生成,您应该使用 public_path() 而不是 URL('')(例如 <img src="{{ public_path() . '/images/somepicture.jpg' }}" id="logo" /> ),
  2. 如果要加载视图return view('yourview');public_path()将不起作用

  3. 仅使用.jpg,.png不起作用

  4. CHMOD 755 您的图像文件夹