Cakephp:mpdf将生成的pdf存储在禁止目录中
在我的Cakephp:mpdf将生成的pdf存储在禁止目录中,php,pdf,cakephp,mpdf,phpoffice,Php,Pdf,Cakephp,Mpdf,Phpoffice,在我的cakephp3.6应用程序中,我使用mpdf创建pdf文件。在localhost上运行时没有任何问题,但在服务器上尝试时,会出现以下错误: SplFileInfo::isFile()[https://secure.php.net/splfileinfo.isfile'>splfileinfo.isfile]:打开有效的basedir限制。文件(/tmp/mysql.sock)不在允许的路径内: 这是因为它试图将pdf文件保存在src文件夹下,而不是webroot下 下面是代码:(exce
cakephp3.6
应用程序中,我使用mpdf
创建pdf文件。在localhost上运行时没有任何问题,但在服务器上尝试时,会出现以下错误:
SplFileInfo::isFile()[https://secure.php.net/splfileinfo.isfile'>splfileinfo.isfile]:打开有效的basedir限制。文件(/tmp/mysql.sock)不在允许的路径内:
这是因为它试图将pdf文件保存在src
文件夹下,而不是webroot
下
下面是代码:(excel生成器工作正常)
如果我将
open_basedir
从{WEBSPACEROOT}{/}{:}{TMP}{/}
更改为none
,那么它可以工作,但是这样做安全吗?将open_basedir
设置为none
不是一个好主意。更好的选择是将特定的存储目录添加到open\u basedir
。您可以在ini文件中全局执行此操作,也可以在apache配置的每个目录中执行此操作(假设您使用的是apache):
php_admin_value open_basedir/your/dir/here/:/other/dir/here
另外,
src
文件夹用于存储应用程序源文件,我不建议将生成的PDF存储在那里。取而代之的是,我会在你的应用程序目录中直接创建一个额外的目录,例如,让我们把它命名为storage
。这样,您的应用程序src将与生成的文件分开。将PHPSReadSheet PDF writer的临时目录设置到您可以访问的位置:
$PdfWriter->setTempDir('path/to/your/temp/directory');
$PdfWriter->save($folder->path.'/timologio'.$inv->invoice_no.'.pdf');
暗示
$PdfWriter->setTempDir('path/to/your/temp/directory');
$PdfWriter->save($folder->path.'/timologio'.$inv->invoice_no.'.pdf');