我正在尝试在一个网站上包含ZendFramework,但没有成功。最近我尝试修改.htaccess文件,如下所示:
php_value include_path ":/home/u230474/Zend"
我也试过了
php_value include_path ".:/home/u230474/Zend"
但在每一种情况下,我都不能再查看网站上的任何页面。
我做了这些修改,因为我试图让系统理解以下代码:
<?php
$libreria='/Zend/ZendFramework/library';
set_include_path(get_include_path().PATH_SEPARATOR.$libreria);
require_once('Zend/Loader/Autoloader.php');
Zend_Loader_Autoloader::getInstance();
我已经尝试了很多天了,尽管我已经和我的同事谈过了,但我们似乎在理解需求方面存在问题。
我使用一个名为InstallationChecker.php的脚本测试了ZendFramework的安装,该脚本应该表明成功安装了Zend Framework,实际上该脚本抛出了如下错误:
Exception thrown trying to access Zend/Loader.php using 'use_include_path' = true. Make sure you include Zend Framework in your include_path which currently contains: .:/usr/lib/php:/usr/local/lib/php
这就是为什么我尝试修改.htaccess
有没有人知道我做错了什么(显然是的)?修改htaccess文件以使`/usr/lib/php和/usr/local/lib/php也包含进来的正确方法是什么?
此外,我还读到,当您包含一个htaccess时,您还必须在每个包含的子目录中包含一个.htaccess文件。我的大多数php脚本都直接放在public文件夹中,但也有很多放在子目录中。我该怎么做呢?
我按照Mike的建议做了一些修改,并包含了整个自定义路径,如下所示:
$libreria='Zend/ZendFramework/library/Zend/Loader';
然后我查看了php.info,它仍然没有显示任何对include_path的更改。此外,我注意到我正在运行的检查是否安装了ZendFramework的测试中的错误告诉我在Zend文件夹中有一个类Loader.php,它实际上就在那里,但是仍然没有加载任何东西。
好的,我做了几个测试,看看哪里出了问题,因为Zend框架看起来加载正常。首先,我将这段代码添加到'libreria.php‘文件中,该文件设置了包含路径(显然没有问题,因为库已经加载)。我这样做了:
$libreria='/home/u230474/public_classes/Zend/ZendFramework/library';
set_include_path(get_include_path().PATH_SEPARATOR.$libreria);
require_once('Zend/Loader/Autoloader.php');
$libload = Zend_Loader_Autoloader::getInstance();
if(!$libload) echo "Librería Zend Framework cargada"; else echo "Error al cargar la librería";
结果,它输出:"Error al cargar la librería“。
我还设置了一个小测试,看看区分大小写是否有问题。在一些有问题的页面上,我在包含头文件和库后立即放入以下代码:
//codigo para probar equidad de nombre de archivo---------->
$filename = basename($_SERVER['SCRIPT_FILENAME']);
$request = basename($_SERVER['SCRIPT_NAME']);
if($filename != $request)
die('Case of filename and request do not match!');
它不会死,所以没问题。(如果我做对了,如果我的文件名有细微的不同,如浏览器地址所示,以及服务器所见,则结果会有所不同,但可能我错了)。
然后,我调用Autoloader.php类的方式发生了一些变化,但我没有看到与Zend的Autoloader简介文档中的静态方法不同的调用它的方式,在那里它写着'Autoloader,basic usage‘。
发布于 2012-10-24 00:34:49
.htaccess可能不是进行此更改的地方,因为将想要包含的新路径追加到现有路径将更加困难。您所做的是仅用您在.htaccess中指定的路径覆盖所有的包含路径。这把事情搞砸了。
如果您查看所包含的PHP代码的第二行,它将向您展示如何附加到include路径(通过获取当前路径并向其附加一个新路径)。只需对要包含的路径执行类似操作即可。
https://stackoverflow.com/questions/13041329
复制