10

我有一个基于数据生成 PDF 文件的网站。

我在一个免费的虚拟主机上试过,没问题,但是当我把它上传到我的服务器时,我得到了这个错误:

TCPDF 错误:无法打开图像文件:/var/www/html/tcpdf/cache/mska_1d34cb1ba2c1951624fbccb7556c6d1d

在缓存文件夹中,文件夹中不存在 mska_1d34cb1ba2c1951624fbccb7556c6d1d。

4

9 回答 9

14

我现在得到了答案。

对于所有能够遇到此问题的人来说,这些都是可能的解决方案。

原因之一是 tcpdf 中的文件夹没有读写权限。确保缓存和图像文件夹具有 644 或 755(推荐)权限。这些权限非常重要,因为在生成 pdf 时有一个过程,它会写入缓存或读入图像。

另一个原因是 tcpdf 不接受 png 文件或透明图像。我的解决方案是将图像制作成 jpeg 并为其应用白色背景。所以避免使用透明的png。

希望它有所帮助。

于 2012-05-29T09:10:51.240 回答
4

在 Ubuntu 中,通过在文件夹上设置 777 权限来修复此错误tcpdf/cache/

chmod 777 cache

我尝试使用 755 或 775 并没有工作。

于 2013-08-13T03:42:35.477 回答
3

猜测一下(使用这样的名称),它正在尝试写入该文件夹。检查 PHP/Apache 对该文件夹有写权限。

稍后它也想从中读取,因此请授予读取和写入权限。

于 2012-05-28T10:20:34.257 回答
2

除了 Bert 建议检查文件夹权限之外,检查 HTTP/HTTPS 问题,并注意如果没有自动正确计算,您可以将 K_PATH_MAIN 服务器路径设置为 tcpdf 文件夹。(在 tcpdf_config.php 中)

define ('K_PATH_MAIN', '/my/absoulte/path/tcpdf/');

于 2012-12-03T19:37:28.433 回答
1

只需从库文件夹 TCPPDF 创建一个名为 cache 的文件夹

在有配置文件夹、字体和图像的地方,还创建一个缓存文件夹,如果不起作用,则授予权限 777 或 755。

于 2013-03-27T21:18:35.083 回答
0

强制执行 SELinux 也可能导致此问题。需要添加一个例外。可以使用 setenforce 0 轻松测试,然后重试生成 pdf。

于 2014-03-12T23:12:40.643 回答
0

检查您的文件的扩展名是否为 pdf(全部小写)而不是 PDF(全部大写)。或者以一种或另一种方式使它们保持一致。我在 Windows / Linux 系统之间遇到了这个问题。

于 2014-08-25T21:35:00.487 回答
0

就我而言,该文件受到保护,TCPDF 尝试使用 CURL (!?!?) 获取该图像,但出现 403 错误,因为 Apache 未找到正确的 cookie。

于 2015-03-03T12:47:12.153 回答
-1

我修复了用图像 /home/image/img1.jpg 的绝对路径替换 url http://www.example.com/img1.jpg

于 2014-08-26T12:29:01.463 回答