使用mxmlc和"exec"从php编译swf;-加载配置文件,但浏览器中没有SWF


Compiling swf from php using mxmlc and "exec" - loading config file but no swf in browser

我在一个RedHat服务器上,有一个简单的PHP页面,它有一个表单,输入姓名、电话和url。

提交表单时,我运行一个命令来使用mxmlc编译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/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…所以我做错了什么让这个工作从网页?我是否应该有一个分支进程并等待它完成?睡眠?

编辑:

我已经研究了fsh和其他mxmlc/java相关的问题

在重新检查代码时,我注意到我不应该转义单引号。它们在实际执行中是有效的,在这个例子中,我应该只对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);
?>