修改.htaccess文件以设置包含ZendFramework的路径

时间:2012-10-24 00:29:57

标签: php .htaccess zend-framework include

我正在尝试将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脚本都直接在公共文件夹中,但我在子目录中也有很多。我该怎么办?

我根据迈克的建议做了一些更改,并将整个自定义路径包括在内:

$libreria='Zend/ZendFramework/library/Zend/Loader';

然后我查看了php.info,它仍然没有显示include_path的任何更改。另外,我注意到我正在运行以检查是否安装了ZendFramework的测试中的错误告诉我Zend文件夹中有一个类Loader.php,它实际上存在,但仍然没有任何内容被加载。

好的,所以我做了一些测试,看看出了什么问题,因为Zend Framework好像加载了。首先,我将此代码添加到文件'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&iacute;a Zend Framework cargada"; else echo "Error al cargar la librer&iacute;a";

结果,它输出:“错误al cargarlalibrerí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使用'

1 个答案:

答案 0 :(得分:1)

.htaccess可能不是进行此更改的地方,因为将要包含的新路径附加到现有路径会更加困难。你所做的是覆盖你在.htaccess中指定的所有包含路径。这搞砸了。

如果你查看你所包含的PHP代码的第二行,它会告诉你如何附加到包含路径(通过获取当前路径并为其添加新路径。)只需对你想要的路径做类似的操作包括。