Использование батика с Yii - не работает в приложении, но работает в терминале - PullRequest
0 голосов
/ 13 июля 2011

Я пытаюсь добавить конвертацию SVG в .png в свое приложение Yii, используя растеризированную библиотеку Batik. В настоящее время я работаю локально на Mac с OSX 10.6.7, PHP 5.3.4 и Java 1.6.0_24.

Когда я запускаю скрипт PHP, который имеет дело с преобразованием, используя ...

$output = shell_exec(java -jar batik/batik-rasterizer.jar -m image/png -d pdf_temp/file.png -w 800 pdf_temp/file.svg) 

Сбой батика с (бесполезной) ошибкой:

About to transcode 1 SVG file(s)
Converting file.svg to pdf_temp/file.png ...  file_1310581599.png

Error while converting SVG 

Однако, используя ...

java -jar batik/batik-rasterizer.jar -m image/png -d pdf_temp/file.png -w 800 pdf_temp/file.svg

... в Терминале работает с лечением и сохраняет файл .png в каталоге / pdf_temp / вместе с исходным .svg

Так что же такого в среде PHP / apache, которая вызывает сбой Batik, когда с терминалом все в порядке?

EDIT:

После общения с некоторыми коллегами мы думаем, что это может быть связано с тем, что Java должна запускаться с правами root - что она делает из терминала, но не внутри веб-сервера.

Добавление ...

2>&1 1> /dev/null

Моей команде Batik shell_exec () выдает следующую ошибку:

Exception in thread "main" java.lang.InternalError: Can't connect to window server - not enough permissions.

Есть какие-нибудь идеи относительно того, как я могу запустить Java с правами root в среде веб-сервера? Или позволить ему выполнять нужные мне функции?


Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

В настоящее время я работаю с Батиком и Yii.Проверьте вывод и путь к исходным файлам.Я предоставил весь путь, и он работает сейчас.Похоже, что Yii не стоит там, где вы видите, вместо этого текущее местоположение Yii - это ваш рут-корень.В моем случае я исправил это так:

    define ('BATIK_PATH', '/var/www/wattquotes/protected/views/calculator/reports/batik/batik-rasterizer.jar');
    $typeString = ' -m image/jpeg';
    $outfile = ' /var/www/wattquotes/protected/views/calculator/reports/batik/temp/pic.jpg';
    $width = ' -w 600';
    $tempName = ' /var/www/wattquotes/protected/views/calculator/reports/batik/temp/proposal.svg';
    $output = shell_exec("java -jar ". BATIK_PATH ." $typeString -d $outfile $width $tempName");

Работает!

0 голосов
/ 11 декабря 2011
...