1

我正在使用 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]:无法打开流:第 27 行的 /home/content/79/4687979/html/parkerList/gateway.php 中没有此类文件或目录

致命错误:require_once() [function.require]:无法打开所需的“Zend/Loader/Autoloader.php”(include_path='.:/usr/local/php5/lib/php: http://blackwheels.info// ZendFramework/library ') 在第 27 行的 /home/content/79/4687979/html/parkerList/gateway.php

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

4

4 回答 4

1

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

于 2010-07-06T20:43:37.520 回答
1

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

您可以使用set_include_path进行设置

于 2010-11-02T18:03:00.390 回答
1

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

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

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

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

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

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

于 2012-04-17T15:27:54.910 回答
0

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

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

于 2010-11-02T17:59:01.687 回答