0

我在网站上实现 Zend 框架时遇到问题。它不是一个花哨的应用程序,只是使用 Zend 的一些验证类和 Zend_File_Transfer_Adapter_Http 将文件上传到服务器。它们都不起作用。问题是这样的:我读过我应该编写一个 htaccess 文件来指示站点的文件夹结构,并且应该启用 mod_rewrite。我不知道如何检查 mod_rewrite,因为我的提供商的控制面板信息量非常少。

无论如何,我认为像这样包含 Zend 库就足够了:

$libreria = $_SERVER['DOCUMENT_ROOT'];
$libreria.='Zend/ZendFramework/library';
set_include_path(get_include_path().PATH_SEPARATOR.$libreria);
require_once('Zend/Loader/Autoloader.php');
Zend_Loader_Autoloader::getInstance();

但显然不是。所以我的另一个问题是:¿我是否应该以不同的方式实例化 Autoloader,我是否应该指定一个命名空间,就像$loader = Zend_Loader_Autoloader::getInstance(); $loader->registerNamespace(something);我不这么认为的那样,因为正如我所说,我只是试图将验证类和文件上传类包含到网络中页。

最后,我在一些脚本上设置了类 PHPMailer 来处理用户输入,每当我似乎正确地包含 Zend Framework 的路径时,页面就会抛出 500 Internal Server 错误,而如果我写的路径不正确,则不会发生这种情况(这是另一个问题,我认为如果我设置相对于文档的路径它不起作用,例如 do $libreria='Zend/ZendFramework/library';不起作用,因为无论我写什么,我都看到我为验证输入设置的所有条件都失败了。

那么最后一个问题是:PHPMailer 与 Zend Framework 是否有些不兼容?对不起,我是个新手,虽然我检查了 PHPMailer 类并且没有发现任何不兼容的东西,但我必须问。

如果有人愿意提供帮助,请提前致谢

我还应该补充一点,我已经在本地服务器上测试了这个网站,它工作正常,问题出在远程服务器上。

另外,我在这里阅读了这篇文章,这正是我正在寻找的,根据它我应该能够使用 new 运算符引用 Zend 的标准类。但是在远程服务器上我不能这样做,只能在本地。

再搜索一下,我在同一站点上阅读了有关 Zend 安装失败的可能原因,这使我能够澄清我的问题:首先,我认为这些条件都可能没有失败,尽管正如我所说的我没有'无法在我的提供者的远程服务器上检查 mod_rewrite,其次,我的 htaccess 文件是空的,所以没有重定向规则(应该丢弃 Zend Framework 与不正确的 htaccess 交互的问题,如果我错了,请纠正我),第三,我无权访问 php.ini 文件。那么我能做什么呢?任何建议都被接受,因为我整个早上都在努力解决这个问题,并且不知道出了什么问题。

4

1 回答 1

1

您必须区分 Zend Framework 作为 MVC 应用程序和独立库。您所追求的是独立库,不幸的是,很多文档都是关于 ZF 作为 MVC 应用程序的。htaccess 是启动 MVC 应用程序所必需的。

对于作为独立库的 ZF,您基本上只需要一件事:正确的路径。如果你愿意,你可以在上面添加自动加载器,但对于 ZF 1.x,这不是必需的,因为你有所有的 require_once。

现在您只需测试您的路径是否有效。如果您的require_once('Zend/Loader/Autoloader.php');语句没有引发错误,那么您基本上已经设置好了,因为包含路径扩展了您的 require_once 语句中的路径。

对于自动装载机。如果这没有显示错误,那么您也应该在此处进行设置。不过,您可能与主应用程序有冲突。在 Zend_Loader_Autoloader 之后,您应该能够实例化 Zend 类。尝试在下一行加载一个验证器。如果这在您的应用程序中有效但不能在以后使用,您可能在该应用程序中有另一个自动加载器覆盖了 Zend 加载器。

于 2012-10-24T13:30:55.017 回答