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');