在本地主机,但服务器返回工作“无法打开流:没有这样的文件或目录”

问题描述:

在我的本地机器上的脚本工作正常,但是当我把它放在服务器上,我得到:在本地主机,但服务器返回工作“无法打开流:没有这样的文件或目录”

应用/挂钩/zend.php

[9]:require_once(装载机/ Autoloader.php) [function.require一次]:未能 打开流:没有这样的文件或目录

堆栈跟踪

应用/钩/ zend.php [9]: require_once()

系统/核心/ Kohana.php [199]: 包括( 应用/钩/ zend.php)

系统/芯/Bootstrap.php [37]: 的Kohana ::设置()

的index.php [106]: 要求(系统/核心/ bootstrap.php中)

我试图加载Zend的进入Kohana 2.3。这里的zend.php

<?php defined('SYSPATH') OR die('No direct access allowed.'); 
/** 
* zend.php 
*/ 
ini_set('include_path', ini_get('include_path'). 
PATH_SEPARATOR.SYSPATH.'vendor/'); 
ini_set('include_path', ini_get('include_path'). 
PATH_SEPARATOR.SYSPATH.'vendor/Zend/'); 
require_once 'Loader/Autoloader.php'; 
Zend_Loader_Autoloader::getInstance(); 
?> 

我已经难倒这个约2天,我已经跟着很多很多不同的教程,做它的不同的路线。所以任何方向都会很棒。目前我的文件结构和设置matches this

+3

装载机/ Autoloader.php没有在任何目录被人发现在include路径INI指令。 如果你做了一个“echo ini_get('include_path');”,它看起来像什么?你的Loader /目录在哪里? – 2010-08-30 17:25:24

+0

。/ usr/share/pear1是ini_set之后的内容,与ini_set之前没有什么不同(因为它在localhost上发生更改)。那么从测试中得到的是我的服务器不支持ini_set? – bradenkeith 2010-08-30 17:32:40

+0

这听起来像你的包含路径被覆盖,这将解释你为什么不能在文件上调用require_once。我建议的下一步就是从最早的脚本入口点开始回调ini_get..'调用,并将其继续移动,直到您可以识别出事情将发生错误的地方。 – 2010-08-30 17:42:22

这个屡试不爽对我来说:

<?php require_once($_SERVER['DOCUMENT_ROOT'] . '/Loader/Autoloader.php'); ?> 
+1

Bam - 它就是这样。它打破了我的本地服务器,但我觉得我可以补丁。到目前为止,这工作得很好......我会看看是否有任何副作用。 – bradenkeith 2010-08-30 19:30:33

+0

如果路径设置错误require_once会通过一个致命错误。尝试在工作页面上回显文档根目录以确保它位于您认为的位置。有时它是不合适的。 – 2010-08-30 19:52:54

这个怎么样?

if ($path = Kohana::find_file('vendors', 'Zend/library/Zend/Loader')) 
{ 
    ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.dirname(dirname($path))); 
    require_once 'Zend/Loader/Autoloader.php'; 
    Zend_Loader_Autoloader::getInstance(); 
} 

来源:kohana-zend (kolanos)

+0

ini_set是我遇到问题的地方。这只是写作我的源代码的一种不同方式。感谢您的回应。 – bradenkeith 2010-08-30 19:32:11