【问题标题】:TCPDF ERROR: Can't open image file: /var/www/html/tcpdf/cache/TCPDF 错误:无法打开图像文件:/var/www/html/tcpdf/cache/
【发布时间】:2012-06-02 16:24:46
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php tcpdf


    【解决方案1】:

    在我的例子中,文件受到保护,TCPDF 尝试使用 CURL (!?!?) 获取该图像,但出现 403 错误,因为 Apache 没有找到正确的 cookie。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            chmod 777 cache
            

            我尝试了 755 或 775,但没有成功。

            【讨论】:

            • 谢谢,这个问题解决了我的问题。我收到 TCPD 错误:无法打开图像文件:(没有图像文件路径)
            • 因为我害怕它会过于宽松,我尝试通过将缓存目录组更改为 www-data(apache 名称)并保持 755 的权限并取得成功。
            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

                【解决方案8】:

                我现在得到了答案。

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

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

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

                希望对您有所帮助。

                【讨论】:

                • 您为我省去了很多关于 PNG 透明度描述的麻烦。非常感谢!
                • 我发现将图像保存为 8 位或 24 位 PNG(在 Fireworks 中)时,TCPDF 接受它们,但 32 位 PNG 会出错。无论透明度如何。
                • @Stef,您应该添加您的评论作为答案!它会得到很多支持!
                【解决方案9】:

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

                它还想在以后读取它,所以要授予读写权限。

                【讨论】:

                  猜你喜欢
                  • 2011-12-01
                  • 1970-01-01
                  • 2011-11-13
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-01-19
                  • 1970-01-01
                  • 2015-05-27
                  相关资源
                  最近更新 更多