在 Linux 系统中安装 PhantomJS 主要有两种常见方式:一是直接下载预编译的二进制文件(推荐,速度快),二是从源码编译安装(适合需要定制或特定版本的情况)。
注意:PhantomJS 项目已于 2018 年停止维护,如果你是在新项目中使用,强烈建议考虑迁移到 Puppeteer、Playwright 或 Headless Chrome,但如果因兼容旧项目必须使用 PhantomJS,以下是安装步骤。
直接下载预编译二进制文件(推荐)
这是最简单、最快的方式。
下载 PhantomJS
访问 PhantomJS 官方下载页面 或使用命令行下载最新稳定版(2.1.1):
# 进入临时目录 cd /tmp # 下载 PhantomJS 2.1.1(根据你的系统架构选择,通常是 x86_64) wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
解压并移动到系统路径
# 解压 tar -xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 # 将二进制文件复制到 /usr/local/bin(需要 sudo 权限) sudo cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/ # 赋予执行权限 sudo chmod +x /usr/local/bin/phantomjs
验证安装
phantomjs --version
如果输出版本号(如 1.1),则安装成功。
从源码编译安装
适用于需要特定版本或预编译包不适用的情况。
安装依赖
PhantomJS 基于 Qt 和 WebKit,需要安装开发库:
# Ubuntu/Debian sudo apt-get update sudo apt-get install -y build-essential chrpath libssl-dev libxft-dev libfreetype6-dev libfreetype6 libfontconfig1-dev libx11-dev libxext-dev # CentOS/RHEL sudo yum groupinstall "Development Tools" sudo yum install -y chrpath openssl-devel freetype-devel fontconfig-devel libX11-devel libXext-devel
下载源码
cd /tmp git clone https://bitbucket.org/ariya/phantomjs.git cd phantomjs git checkout 2.1.1 # 切换到稳定版本
编译安装
./build.sh
编译过程可能需要较长时间(取决于 CPU 性能)。
安装二进制文件
sudo cp bin/phantomjs /usr/local/bin/ sudo chmod +x /usr/local/bin/phantomjs
验证
phantomjs --version
常见问题与解决方案
❌ 错误:phantomjs: error while loading shared libraries: libfontconfig.so.1
原因:缺少字体库。
解决:
# Ubuntu/Debian sudo apt-get install libfontconfig1 # CentOS/RHEL sudo yum install fontconfig
❌ 错误:phantomjs: error while loading shared libraries: libQt5Core.so.5
原因:缺少 Qt5 库。
解决:
# Ubuntu/Debian sudo apt-get install libqt5core5a libqt5webkit5 libqt5gui5 libqt5widgets5 # CentOS/RHEL sudo yum install qt5-qtbase qt5-qtwebkit
❌ 错误:Segmentation fault
原因:
- 系统缺少必要的共享库。
- 使用了不兼容的 Linux 内核或 glibc 版本。
- 尝试在无头服务器(无图形界面)上运行且未正确配置。
解决:
- 确保安装了所有依赖库(见上文)。
- 在服务器上使用
phantomjs --ignore-ssl-errors=true --ssl-protocol=any启动脚本。 - 考虑使用
xvfb模拟图形环境(如果脚本依赖图形渲染):sudo apt-get install xvfb xvfb-run phantomjs your_script.js
✅ 强烈建议:迁移到现代替代方案
由于 PhantomJS 已停止维护,存在安全风险和不兼容问题,新项目建议使用:
| 替代方案 | 特点 | 安装方式 |
|---|---|---|
| Puppeteer | Google 官方维护,基于 Chrome/Chromium | npm install puppeteer |
| Playwright | Microsoft 开发,支持多浏览器 | npm install playwright |
| Headless Chrome | 直接使用 Chrome 无头模式 | 安装 Chrome + --headless |
使用 Puppeteer 替代 PhantomJS:
// PhantomJS 写法
var page = require('webpage').create();
page.open('http://example.com', function(status) {
console.log(status);
phantom.exit();
});
// Puppeteer 写法
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://example.com');
console.log('Page loaded');
await browser.close();
})();
如需帮助迁移代码,可提供你的 PhantomJS 脚本,我可以帮你改写为 Puppeteer 或 Playwright 版本。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/478562.html



