2013-02-27 1 views
0

У меня есть следующий скрипт -Запуск webkit2png из PHP скрипт работает в терминале, но не в браузере

<?php 
$command = "python webkit2png/webkit2png -D screenshots http://stackoverflow.com"; 
$command = escapeshellcmd($command); 
system($command); 

При запуске из терминала с помощью

php test.php 

производит скриншоты веб-сайт , однако открытие test.php в браузере не приносит никаких результатов.

Оба сценария python и php принадлежат пользователю _www, под которым выполняется apache. Я даже попытался запустить test.php под _www в Terminal, он все еще работает. Есть что-то, что мне не хватает?

Благодаря @amccausl Я нашел это в апаче журналы -

Wed Feb 27 07:12:03 mini.local python[83331] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged. 
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL. 
Traceback (most recent call last): 
    File "webkit2png/webkit2png", line 353, in <module> 
    if __name__ == '__main__' : main() 
    File "webkit2png/webkit2png", line 324, in main 
    AppKit.NSBorderlessWindowMask, 2, 0) 
objc.error: NSInternalInconsistencyException - Error (1002) creating CGSWindow 
+0

Вы должны проверить свой журнал ошибок apache. Но вы также можете попробовать sshing в свой собственный ящик для запуска в командной строке (чтобы изолировать любые проблемы с попыткой визуализации webkit без подключения терминала). – amccausl

ответ

0

вы должны использовать абсолютный путь, как /usr/local/php53/bin/php

+0

Где нужно использовать абсолютный путь и что именно? – jogojapan

+0

ваш пул smython должен быть абсолютным путем –

+0

На самом деле, я использовал абсолютный путь для php -/usr/bin/php, но не для python. Я пытался использовать/usr/bin/python (это путь к нему), но не повезло ... –

1

библиотеки вы используете пытаетесь установить соединение с Xserver к сделать png. Это отлично работает на терминале, потому что у вас есть доступное соединение, но будет ломаться для сеансов ssh или apache, потому что они этого не делают.

Вы можете создать для их использования с xvfb

Подход, используемый в this question является хорошим примером для вас (вы можете игнорировать решения).

<?php 
$command = "xvfb-run -a -s '-screen 0 640x480x16' python webkit2png/webkit2png -D screenshots http://stackoverflow.com"; 
$command = escapeshellcmd($command); 
system($command); 
+0

Я нашел пару разных версий скрипта xvfb-run, ни один из них не работал. Попытка выяснить это ... –

+0

Кажется не работает под OS X –

0

Если вы не вынуждены использовать питон и можете установить что-то другое, я бы рекомендовал http://phantomjs.org/. Это намного лучше и мощнее в создании скриншотов веб-страниц и не нуждается в xserver (но node.js)

+0

Спасибо, я буду считать, что –

Смежные вопросы