【问题标题】:Compiling swf from php using mxmlc and "exec" - loading config file but no swf in browser使用 mxmlc 和“exec”从 php 编译 swf - 加载配置文件但浏览器中没有 swf
【发布时间】:2011-10-17 16:17:24
【问题描述】:

我在一个 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。 IE。

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 用于所有权,CHMOD 用于 775...那么我做错了什么才能让它从网页上运行?我应该有一个分叉的进程并等到它完成吗?睡觉?

编辑:

我已经调查了fcsh 和其他mxmlc / java 相关问题。

【问题讨论】:

  • 请问,提交表单时一遍又一遍地编译代码有什么意义?
  • 它是一个原型,但本质上,用户可以输入这些值,并动态生成他或她可以下载的 swf。此外,他们能够使用这些值预览该 swf。它适用于 Flash 横幅广告,我正在开发一个系统,以提高流程的一部分效率。这有意义吗?
  • 不,它没有。为什么不直接编译一个将数据作为输入并生成一些内容供用户查看的 swf。你这样做的方式效率极低,使用资源并且不会增加太多(如果有的话)价值。另外,调试起来会很多困难。
  • 用户是 Flash 广告的买家。他们需要一组 swf,每个汽车经销商、位置和指向该经销商网站的链接都需要一个 swf。他们想要 100 多个 swf,而不是创建一个动态接收这些数据的 swf(如最初提议的那样)。用户不想让开发人员用正确的值手动编译这些,而是​​希望在我们的自定义 CMS 中自己制作 swf 以进行广告管理(以防他们在列表中添加新经销商。)我了解技术效率低下。如果您了解需求,您能帮我解决问题吗?
  • 可能是个愚蠢的问题,但是您检查过诸如 PHP 脚本执行限制之类的显而易见的事情吗?

标签: php apache-flex exec mxml


【解决方案1】:

在重新审查代码时,我注意到我不应该转义单引号。它们对实际执行有效,在这种情况下我应该只为 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);
?>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2011-07-28
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多