Ошибка подключения к Flex / Zend каналу - PullRequest
1 голос
/ 07 июля 2010

Я использую Flex и php для разработки своего проекта.Все отлично работает на моей локальной машине.Однако, когда я загружаю свои файлы на свой сервер (godaddy.com).При загрузке приложения Flex возникла ошибка.

Всплывающее сообщение об ошибке:

отправка не удалась. Channel.connect.failed.error Netconnection.call.Badversion: url: http://mydomail/folder/gateway.php

Я загрузил папку ZendFramewrok на свой сервер, и файл amf_config.ini настроен.(webroot = http://mydomain) Я не уверен, что здесь происходит. Пожалуйста, помогите. Спасибо.

Обновление: мой gateway.php

<?php
ini_set("display_errors", 1);
$dir = dirname(__FILE__);
$webroot = $_SERVER['DOCUMENT_ROOT'];
$configfile = "$dir/amf_config.ini";

//default zend install directory
$zenddir = $webroot. '/ZendFramework/library'; //I did upload the ZendFramwork folder

//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'];
 }
}


// Setup include path
 //add zend directory to include path
set_include_path(get_include_path().PATH_SEPARATOR.$zenddir);
// Initialize Zend Framework loader
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
// 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) {
     // get the first character of the path. 
     // If it does not start with slash then it implies that the path is relative to webroot. Else it will be treated as absolute path
     $length = strlen($dir);
     $firstChar = $dir;
     if($length >= 1)
      $firstChar = $dir[0];

     if($firstChar != "/"){
      // if the directory is ./ path then we add the webroot only.
      if($dir == "./"){       
       $server->addDirectory($webroot);
      }else{
       $tempPath = $webroot . "/" . $dir;
    $server->addDirectory($tempPath);
   }     
  }else{
      $server->addDirectory($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();

ошибка из gateway.php, еслиЯ вызываю его напрямую.

Предупреждение: require_once (Zend / Loader / Autoloader.php) [function.require-Once]: не удалось открыть поток: нет такого файла или каталога в / home / content / 79/4687979/html/parkerList/gateway.php в строке 27

Неустранимая ошибка: require_once () [function.require]: Не удалось открыть обязательный файл 'Zend / Loader / Autoloader.php' (include_path = '.: / usr /local / php5 / lib / php: http://blackwheels.info//ZendFramework/library') в /home/content/79/4687979/html/parkerList/gateway.php в строке 27

Pekka. вы правы. gateway.php isкрыса. но я до сих пор не могу понять, что не так. Zend / Loader / Autoloader.php находится в корневой папке сервера "ZendFramework / library". Я не понимаю, почему мое приложение не может его найти. Еще раз спасибо!

Ответы [ 4 ]

1 голос
/ 17 апреля 2012

У меня была та же проблема, и я решил ее, исправив пути в команде 'require' или 'require_once'.

Она работала нормально, когда на Windows localhost, но после загрузки на мой сервер linux все моитребуются пути, требуется обновление, из-за начальных слешей.Linux понимает это по-другому;)

Исходя из вашего комментария к pukka, ваша проблема будет решена путем изменения строки 27 на

require_once $zenddir. '/Zend/Loader/Autoloader.php';

Надеюсь, это поможет кому-то в такой же ситуации, как и мы.

Кстати, dittonamed - это правильно, эти инструменты действительно хороши, я просто использую разные (Charles или Wireshark - что немного тяжело), ​​но без них не было бы прогресса;)

1 голос
/ 02 ноября 2010

Похоже, ваш include_dir установлен неправильно. Вы говорите, что Autoloader.php в ZendFramework/library. Чтобы это было найдено, вам нужно настроить PHP для поиска в этом каталоге файлов для включения.

Вы можете установить это с помощью set_include_path

1 голос
/ 07 июля 2010

Держу пари, что gateway.php выдает ошибку и искажает результат, ожидаемый вашим Flex-приложением. Можете ли вы попробовать позвонить gateway.php напрямую?

0 голосов
/ 02 ноября 2010

Здесь Service Capture удобен - он покажет вам двустороннюю связь с Flex / PHP, а в случае его сбоя - также покажет вам обычную трассировку PHP

http://www.kevinlangdon.com/serviceCapture/

...