Я на сервере RedHat, с простой страницей PHP, которая имеет форму со входами для имени, телефона и URL-адреса.
Когда форма отправляется, я запускаю команду для компиляции swf с использованием mxmlc. Команда такова:
$generate_command1 = "export _JAVA_OPTIONS=\"-Xms32m -Xmx64m\"; /opt/flex/bin/mxmlc -define+=NAMES::Name,\"\'$name\'\" -define+=NAMES::Phone,\"\'$phone\'\" -define+=NAMES::Website,\"\'$url\'\" -output /path/to/my/webserver/httpdocs/swfbuilder/generated.swf DynamicTextTest.as"; $last_line = exec($generate_command1, $out); print_r($last_line);
Результат всегда:
Loading configuration file /opt/flex/frameworks/flex-config.xml
Когда я запускаю ту же команду из ssh на сервер, я фактически получаю swf. Т.е.
Picked up _JAVA_OPTIONS: -Xms32m -Xmx64m Loading configuration file /opt/flex/frameworks/flex-config.xml /var/www/vhosts/tag.domandtom.com/httpdocs/swfbuilder/generated.swf (945 bytes) [root@htmlfive swfbuilder]#
Оба каталога и файлы были CHOWN'd для владения и CHMOD'd для 775 … Так что я делаю неправильно, чтобы заставить это работать с веб-страницы? Должен ли я иметь разветвленный процесс и ждать, пока он не будет завершен? Спать?
РЕДАКТИРОВАТЬ:
Я посмотрел в fcsh и другие связанные с mxmlc / java вопросы.
При повторном просмотре кода я заметил, что мне не следовало избегать одиночных кавычек. Они действительны для фактического выполнения, и я должен избегать только кодов DOUBLE для php в этом экземпляре …
Окончательный код выглядит следующим образом (для дальнейшего использования):
<?php $name = "generated"; $phone = ""; $url = ""; if(isset($_POST['name'])) { $name = $_POST['name']; } if(isset($_POST['phone'])) { $phone = $_POST['phone']; } if(isset($_POST['url'])) { $url = $_POST['url']; } $swfname = $name . ".swf"; $generate_command1 = "export _JAVA_OPTIONS=\"-Xms32m -Xmx64m\"; /opt/flex/bin/mxmlc -define+=NAMES::Name,\"'$name'\" -define+=NAMES::Phone,\"'$phone'\" -define+=NAMES::Website,\"'$url'\" -output /path/to/my/webserver/httpdocs/swfbuilder/$swfname DynamicTextTest.as"; exec($generate_command1, $out); ?>