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