[PhantomJS] Ubuntu 16.04에서 QXcbConnection: Could not connect to display 오류 해결

우분투 16.04 LTS 서버에서 PhantomJS를 아래 명령어로 설치하고 실행 때 오류가 발생할 수 있다.

# apt install phantomjs

오류 메시지는 아래와 같다.

QXcbConnection: Could not connect to display
PhantomJS has crashed. Please read the bug reporting guide at
<http://phantomjs.org/bug-reporting.html> and file a bug report.
Aborted (core dumped)

위와 같은 오류가 발생하면 xvfb 패키지를 설치하고 아래와 같이 PhantomJS를 실행하면 된다.

# xvfb-run phantomjs -v

위 명령을 매번 입력하는 게 귀찮다면 Alias 를 이용해 처리한다.

# nano /etc/profile.d/aliases.sh

aliases.sh 파일의 내용은 아래와 같다.

#!/bin/bash
alias phantomjs="xvfb-run phantomjs"

파일을 저장한 후 아래 명령어를 통해 갱신해준다.

# source /etc/profile

 

아래의 코드로 PHP 에서 phantomjs 명령어를 실행할 경우 위의 내용을 적용했음에도 제대로 실행이 되지 않는 경우가 있음을 알았다.

<?php
exec('phantomjs /home/user/html/hello.js', $output, $e);

print_r($output);

PHP에서는 아래와 같은 코드로 phantomjs 명령을 실행하면 된다.

<?php
exec('xvfb-run /usr/bin/phantomjs /home/user/html/hello.js', $output, $e);

print_r($output);

 

PHP cli 모드에서 위 스크립트를 실행해보면 xvfb-run: error: Xvfb failed to start 라는 오류가 화면에 표시되는 걸 확인할 수 있다. 이 때는 아래와 같이 -a 옵션을 추가해준다.

<?php
exec('xvfb-run -a /usr/bin/phantomjs /home/user/html/hello.js', $output, $e);

print_r($output);

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.