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
- 先通过cd命令进入你PHP项目的根目录,也就是你存放PHP页面代码的站点目录,例如:
cd /var/www/your_php_site - 依次执行以下命令完成Composer的本地安装:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"php composer-setup.phpphp -r "unlink('composer-setup.php');" - 验证安装结果:执行
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
相关产品推荐
相关产品推荐

