2011-11-02 7 views
5

मैं हाल ही में PHP के लिए फ्लैश बिल्डर 4.5 करने के लिए उन्नत और एक रिलीज मेरी RemoteServer के निर्माण को अपलोड करने की कोशिश कर रहा हूँ। जब मैं app से एक php कॉल करने के लिए प्रयास करते हैं, मैं त्रुटि मिलती है:Channel.Security.Error ... त्रुटि # 2048

Send failednChannel.Security.Error error Error #2048 url: 'http://localhost/my_php/public/gateway.php' 

रिहाई का निर्माण मेरी स्थानीय होस्ट मशीन पर ठीक काम करता है। मेरे सभी PHP सेवा कॉल मेरे रिमोट होस्ट पर हैं। यहाँ मेरी दूरस्थ होस्ट की संरचना है:

/my_directory/html (this is the root directory) 
/my_directory/html/my_php/public/release (this is where my .html wrapper and .swf files sit) 
/my_directory/html/my_php/public (this is where my gateway.php and amf_config.ini files sit) 

त्रुटि विशेष रूप से संदर्भ 'स्थानीय होस्ट', लेकिन मैं जहां कि सेट हो जाता है नहीं मिल रहा। जब मैं त्रुटि # 2048 गूगल, समाधान एक बुरी तरह से कॉन्फ़िगर किया गया crossdomain फ़ाइल को इंगित ... मेरी सभी सेवाएँ remotehost (जहां एप्लिकेशन होस्ट किया गया है) पर हैं तो मुझे नहीं लगता कि इस मुद्दे हो सकता है। - आग - पर्यावरण

<?php 
ini_set("display_errors", 1); 
$dir = dirname(__FILE__); 
$webroot = $_SERVER['DOCUMENT_ROOT']; 
$configfile = "$dir/amf_config.ini"; 
$servicesdir = $dir.'/../services'; 
$librarydir = $dir.'/../library'; 
//default zend install directory 
$zenddir = $webroot.'/ZendFramework/library'; 
//Load ini file and locate zend directory 
if (file_exists($configfile)) { 
$arr = parse_ini_file($configfile, true); 
if (isset($arr['zend']['webroot'])) { 
    $webroot = $arr['zend']['webroot']; 
    $zenddir = $webroot.'/ZendFramework/library'; 
} 
if (isset($arr['zend']['zend_path'])) { 
    $zenddir = $arr['zend']['zend_path']; 
} 
if (isset($arr['zend']['library'])) { 
    $librarydir = $arr['zend']['library']; 
} 
if (isset($arr['zend']['services'])) { 
    $servicesdir = $arr['zend']['services']; 
} 
} 
// Setup include path 
// add zend directory, library and services to include path 
set_include_path(get_include_path() 
.PATH_SEPARATOR.$zenddir 
.PATH_SEPARATOR.$librarydir 
.PATH_SEPARATOR.$servicesdir); 
// Initialize Zend Framework loader 
require_once 'Zend/Loader/Autoloader.php'; 
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true)->suppressNotFoundWarnings(true); 
// Load configuration 
$default_config = new Zend_Config(array("production" => false), true); 
$default_config->merge(new Zend_Config_Ini($configfile, 'zendamf')); 
$default_config->setReadOnly(); 
$amf = $default_config->amf; 
// Store configuration in the registry 
Zend_Registry::set("amf-config", $amf); 
// Initialize AMF Server 
$server = new Zend_Amf_Server(); 
$server->setProduction($amf->production); 
if (isset($amf->directories)) { 
$dirs = $amf->directories->toArray(); 
foreach ($dirs as $dir) { 
    if ($dir == "./") { 
     $server->addDirectory($webroot); 
    } else 
     if (realpath("{$webroot}/{$dir}")) { 
      $server->addDirectory("{$webroot}/{$dir}"); 
     } else 
      if (realpath($dir)) { 
       $server->addDirectory(realpath($dir)); 
      } 
} 
} 
// Initialize introspector for non-production 
if (! $amf->production) { 
$server->setClass('Zend_Amf_Adobe_Introspector', '', 
array("config" => $default_config, "server" => $server)); 
$server->setClass('Zend_Amf_Adobe_DbInspector', '', 
array("config" => $default_config, "server" => $server)); 
} 
// Handle request 
echo $server->handle(); 
+0

अजीब तरह से, त्रुटि संदेश के संदर्भ में "http: //localhost/my_php/public/gateway.php" लेकिन वहाँ कोई संदर्भ नहीं है करने के लिए "स्थानीय होस्ट" में मेरा गेटवे या एएमएफ कॉन्फ़िगरेशन फ़ाइल –

+0

आप इस सेवा को अपने फ्लेक्स ऐप में कैसे कॉल कर रहे हैं? आपके रिमोट ऑब्जेक्ट के 'एंडपॉइंट', 'स्रोत', 'गंतव्य' गुण क्या हैं? अगर आप अपने ब्राउज़र में गेटवे.एफ़पी खोलते हैं तो क्या होता है? त्रुटि संदेश के अनुसार, ऐसा लगता है, कि समस्या है, कि फ्लेक्स कॉल स्थानीय होस्ट .. – sydd

+0

हाँ, gateway.php कोई त्रुटि देता है जब मैं ब्राउज़र में इसे सीधे लोड करने के लिए प्रयास करें। मुझे लगता है कि php या ऐप में 'localhost' निर्दिष्ट नहीं किया जा रहा है –

उत्तर

0

मैं एक फ्लेक्स में एक ही समस्या थी:

[zend] 
webroot = "/my_directory/html" 

zend_path ="/my_directory/html/ZendFramework/library" 
library ="/my_directory/html/my_php/library" 
services ="/my_directory/html/my_php/services" 

[zendamf] 
amf.production = false 
amf.directories[]=/my_directory/html/my_php/services 

यहाँ मेरी gateway.php फ़ाइल है:

यहाँ मेरी amf_config.ini फ़ाइल है। असली समस्या प्रोजेक्ट गुणों में संदर्भ-रूट थी। क्योंकि आपने फ्लेक्स 4.5 का उपयोग किया है, इस सेटिंग के लिए कोई इनपुट फ़ील्ड नहीं है। फ्लेक्स बिल्डर 3 में, प्रोजेक्ट गुणों में एक सेटिंग थी -> फ्लेक्स सर्वर -> संदर्भ रूट।

मैं पागल हो गयी और घंटे के बाद [अमेरिकन प्लान-22939] एक adobes कीड़े-साइट पर लेख पाया।

वह मेरी समस्या का समाधान। मुझे कोई जानकारी नहीं है, जिन परियोजनाओं का आप उपयोग कर रहे हैं, अपनी परियोजना में {context.root} नाम की एक स्ट्रिंग को खोजने का प्रयास करें या अपनी प्रोजेक्ट सेटिंग्स के बारे में थोड़ा सा पोस्ट करें। मुझे पता है कि ब्लेज़ php से अलग है, लेकिन हो सकता है कि यह आपको एक ट्रैक पर वापस लाए एक टिप है।

दुर्भाग्य से मैं अपने धागा और अपने स्थापना के बारे में अधिक ज्ञान के साथ एक php वातावरण की स्थापना पुन: पेश करने में सक्षम नहीं हूँ। (सर्वर-टेक्नोलॉजी, और एक)

संपादित करें: अतिरिक्त जानकारी: मुझे सभी कंपाइलर तर्कों की एक सूची मिली है। इस तर्क के साथ यह प्रयास करें:

-context-root <context-path> 
    full name -compiler.context-root 
    path to replace {context.root} tokens for service channel endpoints 

br फ्रैंक

संबंधित मुद्दे