我在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相关问题。
答案 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);
?>