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

时间:2016-01-25 11:48:47

标签: php laravel-5 file-permissions dompdf laravel-5.2

我正在使用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();
}

这是错误:

  

class.pdf.php第4036行中的ErrorException:imagepng(.png):失败了   开放流:权限被拒绝

和堆栈跟踪:

  在HandleExceptions-&gt; handleError(&#39; 2&#39;,在class.pdf.php第4036行

中   &#39; imagepng(.png):无法打开流:权限被拒绝&#39;,   &#39; /Applications/XAMPP/xamppfiles/htdocs/blablacompany/vendor/dompdf/dompdf/lib/class.pdf.php' ;,   &#39; 4036&#39;,数组(&#39;文件&#39; =&gt;   &#39; /Applications/XAMPP/xamppfiles/htdocs/blablacompany/public/images/logo.png' ;,   &#39; X&#39; =&GT; &#39; 34.015748031496&#39;,&#39; y&#39; =&GT; &#39; 606.8742519685&#39;,&#39; w&#39; =&GT; &#39; 334.5&#39;,&#39; h&#39;   =&GT; &#39; 201&#39;,&#39;字节&#39; =&GT; &#39; 6&#39;,&#39; img&#39; =&GT; &#39;资源ID#278&#39;,&#39; eight_bit&#39; =&GT;是的,&#39; wpx&#39; =&GT; &#39; 446&#39;,&#39; hpx&#39; =&GT; &#39; 268&#39;,&#39; tempfile_alpha&#39; =&GT; &#39; png格式&#39 ;,   &#39; tempfile_plain&#39; =&GT; &#39; .png&#39;,&#39; imgalpha&#39; =&GT;资源,&#39; c&#39; =&GT; &#39; 256&#39 ;,   &#39; allocated_colors&#39; =&GT;数组(&#39;&#39; =&gt;&#39; 0&#39;,&#39; 9598261&#39;,&#39; 12756008&#39;,   &#39; 9993266&#39;,&#39; 15848487&#39;,&#39; 7493443&#39;,&#39; 12690472&#39;,&#39; 16309032&#39;,&#39; 14269479& #39 ;,   &#39; 5586004&#39;,&#39; 11637804&#39;,&#39; 16243240&#39;,&#39; 8809018&#39;,&#39; 2169210&#39;,&#39; 12624680& #39 ;,   &#39; 15256615&#39;,&#39; 6638155&#39;,&#39; 2366072&#39;,&#39; 5454677&#39;,&#39; 10256177&#39;,&#39; 13151271& #39; ...

你能帮我吗?

P.S。

  1. 我也试过url(&#39; /images/logo.png')而不是public_path()。 &#39; /images/logo.png'
  2. 我在存储,供应商以及公共/图像上都有chmod 777,但仍然没有工作......
  3.   

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

    更新:

    • 如果我设置chmod 754和return view('pdf') - &gt;图像未显示(以及其他使用图像的页面/
    • 如果我设置chmod 754和$pdf = PDF::loadView('pdf', $data); return $pdf->stream(); - &gt;生成PDF但图像是方格描述
    • 但如果我设置chmod 755和return view('pdf') - &gt;图像显示,但.. ..
    • 当我尝试$pdf = PDF::loadView('pdf', $data); return $pdf->stream();时收到错误消息:
      

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

1 个答案:

答案 0 :(得分:0)

我想出了如何处理它:

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

  3. ,则无法使用
  4. 仅使用 .jpg ,。png不会工作

  5. chmod 755你的图像文件夹