我正在开发一个包含php
和mysql
以及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。文件
我该怎么办?
答案 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/