[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);