You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux主机环境下如何安装使用PHP Composer及dompdf扩展

Linux 环境下通过 Composer 安装 Dompdf 实现 PHP 转 PDF 操作指引

前置检查

先确认主机PHP环境可用,执行命令查看PHP版本:
php -v
Dompdf 最新稳定版要求PHP版本≥7.1,同时确保PHP已安装dom、mbstring、gd扩展,缺扩展的话直接用系统包管理器装对应扩展即可,比如Ubuntu下执行apt install php-dom php-mbstring php-gd,CentOS下执行dnf install php-dom php-mbstring php-gd。
注意:不要直接用apt/yum源内的Composer包,版本普遍滞后,极易出现依赖兼容问题,用官方脚本安装最稳妥

第一步:安装 Composer

  1. 先通过cd命令进入你PHP项目的根目录,也就是你存放PHP页面代码的站点目录,例如:
    cd /var/www/your_php_site
  2. 依次执行以下命令完成Composer的本地安装:
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
  3. 验证安装结果:执行php composer.phar --version,终端正常输出版本号即为安装成功。
    如果需要全局调用Composer(不用每次打php composer.phar前缀),额外执行mv composer.phar /usr/local/bin/composer,之后直接输入composer即可调用。

第二步:安装 Dompdf 依赖

在项目根目录下执行对应安装命令:

  • 如果是本地安装的Composer(目录下存在composer.phar文件):
    php composer.phar require dompdf/dompdf
  • 如果已经配置了全局Composer命令:
    composer require dompdf/dompdf
    等待命令执行完成,项目根目录会自动生成vendor文件夹、composer.json和composer.lock文件,即为安装成功。
    如果执行过程中报权限错误,给项目目录分配正确权限即可,不要随意设置777权限,例如Ubuntu下Nginx环境执行chown -R 你的当前用户名:www-data /var/www/your_php_site即可。

第三步:PHP 代码实现 HTML 转 PDF 示例

在项目目录下新建测试PHP文件(比如gen_pdf.php),代码如下,注意必须先引入Composer的自动加载文件,否则无法识别Dompdf类:

<?php
// 引入Composer自动加载文件
require __DIR__ . '/vendor/autoload.php';

use Dompdf\Dompdf;
use Dompdf\Options;

// 初始化配置
$options = new Options();
$options->set('isRemoteEnabled', true); // 允许加载远程图片、外部CSS资源
// 有中文输出需求时,提前把支持中文的ttf字体上传到项目目录,配置对应字体路径避免乱码
// $options->set('fontDir', __DIR__ . '/fonts/');
// $options->set('fontCache', __DIR__ . '/fonts/cache/');

$dompdf = new Dompdf($options);

// 待转换的HTML内容,也可以通过ob抓取动态渲染后的页面内容
$html = <<<HTML
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>PDF测试页</title>
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }
        .container { padding: 30px; }
        h1 { color: #1a73e8; margin-bottom: 20px; }
        p { font-size: 14px; line-height: 1.6; margin-bottom: 10px; }
    </style>
</head>
<body>
    <div class="container">
        <h1>PDF生成测试</h1>
        <p>这是通过Dompdf生成的测试PDF文件,运行环境为Linux + PHP。</p>
        <p>如果看到这段内容,说明Dompdf配置运行正常。</p>
    </div>
</body>
</html>
HTML;

// 加载HTML内容
$dompdf->loadHtml($html);
// 设置纸张规格:A4纸,纵向,需要横向把第二个参数改成'landscape'
$dompdf->setPaper('A4', 'portrait');
// 执行渲染
$dompdf->render();

// 输出方式二选一:
// 1. 直接在浏览器展示PDF,Attachment设为true会触发下载
$dompdf->stream("测试文件.pdf", ["Attachment" => false]);
// 2. 把PDF保存到服务器本地,注释上面的stream行,放开下面这行
// file_put_contents(__DIR__ . '/保存的测试文件.pdf', $dompdf->output());
?>

常见问题说明

  • 中文乱码:默认自带的DejaVu字体不支持中文,必须自行上传思源黑体、宋体等支持中文的ttf字体,在配置里指定字体目录,同时CSS里声明对应font-family即可解决。
  • 资源加载失败:开启isRemoteEnabled后仍加载失败的,本地CSS、图片资源尽量用服务器绝对路径传入,不要用相对路径。
  • 内存不足报错:转换长页面时如果报内存耗尽,在代码开头加ini_set('memory_limit', '256M');适当调大PHP内存限制即可。
  • 超时报错:大文件转换时可以在代码开头加set_time_limit(30);适当延长脚本执行时间。

内容的提问来源于stack exchange,提问作者thekavak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:21:24