【问题标题】:Flex/Zend channel connect failed errorFlex/Zend 通道连接失败错误
【发布时间】:2010-07-06 20:37:51
【问题描述】:

我正在使用 Flex 和 php 来开发我的项目。在我的本地机器上一切正常。但是,当我将文件上传到我的服务器 (godaddy.com) 时。加载我的 flex 应用程序时出现错误。

弹出的错误信息是

发送失败 通道连接失败错误 Netconnection.call.Badversion:网址: http://mydomail/folder/gateway.php

我已将 ZendFramewrok 文件夹上传到我的服务器,并且 amf_config.ini 已配置。 (webroot =http://mydomain) 我不确定这里发生了什么。请帮忙。谢谢。

更新: 我的网关.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 行

佩卡。你说的对。 gateway.php 是老鼠。但我仍然无法弄清楚出了什么问题。 Zend/Loader/Autoloader.php 位于服务器根目录“ZendFramework/library”文件夹下。我不明白为什么我的应用程序找不到它。再次感谢!

【问题讨论】:

  • 请致电您的gateway.php,看看它是否会抛出任何错误。
  • 另外,您的 Flex 代码中调用 PHP 脚本的部分也可以发布。

标签: php apache-flex zend-framework zend-loader


【解决方案1】:

我遇到了同样的问题,我通过更正命令“require”或“require_once”中的路径解决了这个问题。

它在 Windows localhost 上运行正常,但是在上传到我的 linux 服务器后,由于前导斜杠,我所有需要的路径都需要更新。 Linux 对它的理解不同;)

根据您对 pukka 的评论,您的问题将通过将第 27 行更改为来解决

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

希望这对像我们一样处于相同情况的人有所帮助。

顺便说一句,同名是对的,这些工具真的很棒,我只是使用不同的(Charles 或 Wireshark - 这有点重)但没有它们就没有进展;)

【讨论】:

    【解决方案2】:

    我敢打赌,是gateway.php 引发了错误,并混淆了您的 Flex 应用程序所期望的结果。可以试试直接拨打gateway.php吗?

    【讨论】:

    • 谢谢佩卡。我不能直接调用 gateway.php。它通过 Flex 应用程序。我只是在这里设置我的 gateway.php 代码。谢谢回复。 +1
    • @Jerry 你不能直接调用它来看看它是否可以正常工作而没有任何明显的致命错误等吗?
    【解决方案3】:

    看起来您的 include_dir 设置不正确。你说Autoloader.phpZendFramework/library 中。要找到它,您需要将 PHP 设置为在该目录中查找包含文件。

    您可以使用set_include_path 进行设置

    【讨论】:

      【解决方案4】:

      这是服务捕获很方便的地方 - 它会显示与 Flex/PHP 的来回通信,如果它崩溃了 - 还会显示正常的 PHP 跟踪

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

      【讨论】:

        猜你喜欢
        • 2023-02-25
        • 2016-05-06
        • 2018-03-05
        • 2017-02-13
        • 1970-01-01
        • 2013-09-02
        • 2012-04-16
        • 2012-10-06
        • 1970-01-01
        相关资源
        最近更新 更多