【问题标题】:TCPDF server 500 error - want a detailed error in PHPTCPDF 服务器 500 错误 - 需要 PHP 中的详细错误
【发布时间】:2016-04-04 22:01:12
【问题描述】:

我一直在尝试设置这个 php pdf 脚本。我从网站上下载了代码并从这个页面上传了 [https://sourceforge.net/projects/tcpdf/files/][1]

它一直有效,直到 $pdf 开头的行-我添加了 echo $filename 行以查看是否可以看到错误(在此网站上找到的想法-页面显示 1hello-我认为这可能意味着 require_once 可以正常工作。

    <?
// Include the main TCPDF library (search for installation path).
$filename = require_once('../tcpdf/examples/tcpdf_include.php');

echo $filename.'hello';
exit;
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false, true);

等等。等等

如果我删除 $filename = 和 echo / exit 行(如下),我会收到一个通用服务器 500 错误 - 任何想法如何获得我可以实际使用的详细错误?我可以在其他页面上看到详细的错误。

    <?
// Include the main TCPDF library (search for installation path).
require_once('../tcpdf/examples/tcpdf_include.php');

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false, true);

等等。等等

编辑:通过添加 ini_set('display_errors', 1); 发现错误到页面 - 错误是 致命错误:未找到 Class 'TCPPDF'...在第 31 行

第 31 行指的是:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

如果我查看 tcpdf_include.php 包含文件,它会说一些代码引用了一些我认为我的服务器没有的文件:

$tcpdf_include_dirs = array(
realpath('../tcpdf.php'),
'/usr/share/php/tcpdf/tcpdf.php',
'/usr/share/tcpdf/tcpdf.php',
'/usr/share/php-tcpdf/tcpdf.php',
'/var/www/tcpdf/tcpdf.php',
'/var/www/html/tcpdf/tcpdf.php',
'/usr/local/apache2/htdocs/tcpdf/tcpdf.php' );

/usr/share/php/ 为空。我猜我应该将 tcpdf.php 文件放在所有这些位置,还是没关系,我没抓住重点?

【问题讨论】:

    标签: php pdf tcpdf


    【解决方案1】:

    您可以在 Web 服务器 (Apache?) 日志中找到详细的 500 服务器错误。日志的位置取决于您的操作系统/安装。

    您收集得很好:1hello 表示所需文件已正确加载。你不需要检查它,因为如果require/require_once 失败,你会得到一个致命错误,脚本就会死掉。

    如果您可以追踪服务器错误日志,您可能会看到如下内容:

    致命错误:找不到类“TCPD”

    因为 tcpdf/examples/tcpdf_include.php 旨在与提供的示例一起使用,并且只有在主 URL(或当前目录,如果您通过命令行执行脚本)时它才能正常工作在同一目录中。

    要加载 TCPDF 类,你必须

    require_once( '../tcpdf/tcpdf.php' );
    

    但我建议你指明绝对路径。

    【讨论】:

    • 谢谢@fusion3k,我已经尝试过使用绝对路径的建议,但仍然没有乐趣。我还尝试完全按原样使用文件(目录中的所有文件都可以正常工作。问题是我想在我网站上的几个位置使用此代码。我尝试包含有效的示例文件当在它自己的 (tcpdf) 目录 link 到另一个文件时,但它不起作用。有什么想法吗?谢谢
    • 必须工作。您不必使用示例,而是使用主要的 tcpdf.php 类文件。请注意,tcpdf 目录必须位于您的服务器文档根目录或 php 全局包含目录中。 “它不起作用”对您来说是什么意思?你有什么错误?
    • 嗨@fusion3k - 抱歉含糊不清。 “它不起作用”意味着它显示服务器 500 错误。只要我只使用 tcpdf 文件夹内的文件,它就可以工作,但如果我尝试使用(包含)文件夹外部的文件,它就不起作用(服务器 500)
    • 当您看到 500 服务器错误时,您必须查看服务器日志以了解问题。
    • 我在这篇文章的前面看到过,看了看但找不到错误日志。我按照 kb plesk 的说明找到了一个空的日志文件并放弃了。郁闷!!
    【解决方案2】:

    这些 TCPDF 构造函数不存在。您在末尾添加了一个布尔变量,这是不允许的,哈哈。

    以下更好:

    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    

    【讨论】:

    • 最后一个参数完全有效(详见docs)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 2016-11-28
    • 2016-02-11
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    相关资源
    最近更新 更多