Niedawno zaktualizowałem program Flash Builder 4.5 do PHP i próbuję przesłać kompilację wydania na mój serwer zdalny. Gdy próbuję wykonać połączenie php z aplikacji, pojawia się błąd:Channel.Security.Error ... Błąd nr 2048
Send failednChannel.Security.Error error Error #2048 url: 'http://localhost/my_php/public/gateway.php'
Build uwolnienie działa dobrze na moim komputerze localhost. Wszystkie moje wywołania usługi php są na moim zdalnym hoście. Oto struktura mojego zdalnego hosta:
/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)
Błąd odesłań „localhost”, ale nie mogę znaleźć gdzie to zostanie ustawiony. Kiedy błąd google nr 2048, rozwiązania wskazują na źle skonfigurowany plik crossdomain ... wszystkie moje usługi są na remotehost (gdzie jest hostowana aplikacja), więc nie sądzę, że może to być problem.
Oto moja amf_config.ini file:
[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
Oto mój plik gateway.php:
<?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();
dziwnie, odniesienia komunikat o błędzie „http: //localhost/my_php/public/gateway.php”, ale nie ma odniesienia do „localhost” w mój plik konfiguracyjny gateway lub amf –
Jak wywołujesz tę usługę w swojej aplikacji Flex? Jakie są właściwości 'endpoint',' source', 'destination' twojego obiektu remoteObject? Co się stanie, jeśli otworzysz gateway.php w przeglądarce? Zgodnie z komunikatem o błędzie wydaje się, że problem polega na tym, że Flex wywołuje Localhost .. – sydd
yeah, gateway.php nie zwraca błędów, gdy próbuję załadować go bezpośrednio w przeglądarce. Nie mogę znaleźć, gdzie "localhost" jest określony w php lub aplikacji –