使用mxmlc和“exec”从php编译swf - 在浏览器中加载配置文件但没有swf

时间:2011-08-01 18:31:34

标签: php flex exec mxml

我在RedHat服务器上,有一个简单的PHP页面,其中包含一个表单,其中包含姓名,电话和网址的输入。

提交表单时,我运行一个命令来使用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]# 

目录和文件已全部归属于所有权,CHMOD为775 ......那么我在网页上运行这项工作有什么不对?我应该有一个分叉的过程,等到它完成了吗?睡觉?

编辑:

我查看了fcsh和其他mxmlc / java相关问题。

1 个答案:

答案 0 :(得分:2)

在重新审核代码时,我注意到我不应该使用单引号转义。它们对于实际执行是有效的,我应该只在这个例子中逃避php的DOUBLE引号......

最终代码如下(供将来参考):

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