无法打开流:权限被拒绝

时间:2014-11-10 17:38:01

标签: php email pdf dompdf

我正在开发一个包含phpmysql以及dompdf的网站,在我的一个表单中,我有一个按钮,按钮必须生成一个。{{ 1}}文件及以后,通过电子邮件发送。 (在我的本地主机上,它可以生成pdf文件,但不发送电子邮件。在我的网络服务器上,我无法创建pdf但是电子邮件被发送...)

我能看到的信息是:

pdf

这是我的代码:

Warning: file_put_contents(C:/Inetpub/vhosts/.../dompdf/lib/fonts/log.htm) [function.file-put-contents]: failed to open stream: Permission denied in C:\Inetpub\vhosts\...\dompdf\include\dompdf.cls.php on line 864 
//the mistake in in the `dompdf` class

Warning: file_put_contents(pdf/pdfgenerados/cotizacion.pdf) [function.file-put-contents]: failed to open stream: Permission denied in C:\Inetpub\vhosts\...\list.php on line 116

我收到了电子邮件。但我不接受pdf。文件

我该怎么办?

5 个答案:

答案 0 :(得分:2)

这是因为mPDF试图在TTFONTDATA文件夹上写一个临时文件

您可以通过授予TTFONTDATA文件夹写入权限0777来解决此问题 要么 通过将_MPDF_TTFONTDATAPATH路径更改为Linux临时目录 在创建mPDF实例之前添加以下行

define('_ MPDF_TTFONTDATAPATH',sys_get_temp_dir()。“/”);

答案 1 :(得分:0)

您可能没有文件夹

中的访问权限
pdf/pdfgenerados/

提供对此文件夹的读/写访问权限,如果文件已存在,则提供文件cotizacionnueva.pdf

答案 2 :(得分:0)

出于安全原因,DOMPDF 无法读取 dompdf 根目录之外的 html 文件。请参阅 dompdf_config.inc.php 的第 133 行。您必须使用的路径是 DOMPDF 根目录。

这会起作用:

  $url = base_path() . '/vendor/dompdf/dompdf/pdfs/email-price-quote.html';
  $dompdf = new Dompdf();
  $dompdf->load_html_file($url);
  $dompdf->render();

答案 3 :(得分:0)

我在生产中的 laravel 上遇到了类似的问题。

必须手动设置一些选项:

App::make('dompdf.wrapper')
->setOptions([
  'logOutputFile' => storage_path('logs/dompdf.html'),
  'tempDir' => storage_path('fonts'),
  'isRemoteEnabled' => true
])

答案 4 :(得分:-3)

cd /application/vendor/mpdf/mpdf  
chmod -R 777 ttfontdata/