2011-08-01 49 views
1

我在RedHat服務器上,有一個簡單的PHP頁面,具有表單,輸入名稱,電話和url。使用mxmlc和「exec」從php編譯swf - 加載配置文件,但在瀏覽器中沒有swf

當表單被提交時,我運行一個命令使用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) 
[[email protected] swfbuilder]# 

兩個目錄和文件已CHOWN'd所有權和CHMOD'd爲775 ...所以我在做什麼錯得到這個從網頁工作?我應該有一個分叉進程並等待它完成?睡覺?

編輯:

我看着fcshmxmlc/java相關的問題。

+0

我能問,什麼是在提交表單時一遍又一遍地編譯你的代碼? –

+0

這是一個原型,但基本上,用戶可以輸入這些值,並動態生成一個swf,他或她可以下載。另外,他們能夠用這些值預覽swf。這是針對Flash橫幅廣告的,我正在開發一個系統,以使流程更加高效。那有意義嗎? –

+1

不,它沒有。爲什麼不編譯一個將數據作爲輸入並生成供用戶查看的swf?你這樣做的方式效率極低,使用資源並且不會增加太多(如果有的話)價值。另外,它會很難調試。 –

回答

2

在重新審查代碼時,我注意到我不應該逃脫單引號。它們是有效的實際執行,我只能逃避雙引號在這種情況下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); 
?> 
+1

瞭解'escapeshellarg' http://www.php.net/manual/en/function.escapeshellarg.php – sanmai