我有一个基于数据生成 PDF 文件的网站。
我在一个免费的虚拟主机上试过,没问题,但是当我把它上传到我的服务器时,我得到了这个错误:
TCPDF 错误:无法打开图像文件:/var/www/html/tcpdf/cache/mska_1d34cb1ba2c1951624fbccb7556c6d1d
在缓存文件夹中,文件夹中不存在 mska_1d34cb1ba2c1951624fbccb7556c6d1d。
我现在得到了答案。
对于所有能够遇到此问题的人来说,这些都是可能的解决方案。
原因之一是 tcpdf 中的文件夹没有读写权限。确保缓存和图像文件夹具有 644 或 755(推荐)权限。这些权限非常重要,因为在生成 pdf 时有一个过程,它会写入缓存或读入图像。
另一个原因是 tcpdf 不接受 png 文件或透明图像。我的解决方案是将图像制作成 jpeg 并为其应用白色背景。所以避免使用透明的png。
希望它有所帮助。
在 Ubuntu 中,通过在文件夹上设置 777 权限来修复此错误tcpdf/cache/
:
chmod 777 cache
我尝试使用 755 或 775 并没有工作。
猜测一下(使用这样的名称),它正在尝试写入该文件夹。检查 PHP/Apache 对该文件夹有写权限。
稍后它也想从中读取,因此请授予读取和写入权限。
除了 Bert 建议检查文件夹权限之外,检查 HTTP/HTTPS 问题,并注意如果没有自动正确计算,您可以将 K_PATH_MAIN 服务器路径设置为 tcpdf 文件夹。(在 tcpdf_config.php 中)
define ('K_PATH_MAIN', '/my/absoulte/path/tcpdf/');
只需从库文件夹 TCPPDF 创建一个名为 cache 的文件夹
在有配置文件夹、字体和图像的地方,还创建一个缓存文件夹,如果不起作用,则授予权限 777 或 755。
强制执行 SELinux 也可能导致此问题。需要添加一个例外。可以使用 setenforce 0 轻松测试,然后重试生成 pdf。
检查您的文件的扩展名是否为 pdf(全部小写)而不是 PDF(全部大写)。或者以一种或另一种方式使它们保持一致。我在 Windows / Linux 系统之间遇到了这个问题。
就我而言,该文件受到保护,TCPDF 尝试使用 CURL (!?!?) 获取该图像,但出现 403 错误,因为 Apache 未找到正确的 cookie。
我修复了用图像 /home/image/img1.jpg 的绝对路径替换 url http://www.example.com/img1.jpg