【问题标题】:Include zend framework into php project zend_search_lucene将 zend 框架包含到 php 项目 zend_search_lucene
【发布时间】:2013-03-21 20:01:43
【问题描述】:

我在互联网上搜索了许多信息,也尝试了许多不同的建议,但似乎没有任何我需要的工作。所以这里是问题: 我想使用 Zend_Search_Lucene 在数据库中执行搜索,但我一直坚持在一开始......创建索引并让 Zend 工作。我在共享 Hostgator 主机上并使用此 php 代码生成我的索引:

include ('/home/username/public_html/website/config.php');

$path = '/usr/local/Zend';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once('Zend/Loader.php');
Zend_Loader::registerAutoload();
require_once ('Zend/Search/Lucene.php');
$index = Zend_Search_Lucene::create('/home/username/public_html/website/tmpbuild');
    $con = mysql_connect("".$dbhost."","".$dbusername."","".$dbpass."");
    if (!$con)
        {
        die('Could not connect: ' . mysql_error());
        }

        mysql_select_db("".$dbname."", $con);

$sql = ('SELECT * FROM rasti_failai');
while($eilute = mysql_fetch_array($sql))
        {
        $filenamesql = $eilute['failu_name'];
        $dydissql = $eilute['dydis'];
        $hostas = $eilute['hostas'];
        $datasql = $eilute['data'];
        $aprasymassql = $eilute['header'];
        $titlesql = $eilute['aprasymas'];
        $url = $eilute['url'];
        $links = $eilute['links'];      

    $document = new Zend_Search_Lucene_Document ();

$document->addField(Zend_Search_Lucene_Field::unIndexed('ID', $eilute['ID']));
$document->addField(Zend_Search_Lucene_Field::Text('failu_name', $eilute['failu_name']));
$document->addField(Zend_Search_Lucene_Field::UnStored('dydis', $eilute['dydis']));
$document->addField(Zend_Search_Lucene_Field::UnStored('hostas', $eilute['hostas']));
$document->addField(Zend_Search_Lucene_Field::UnStored('header', $eilute['header']));
$document->addField(Zend_Search_Lucene_Field::UnStored('aprasymas', $eilute['aprasymas']));
$document->addField(Zend_Search_Lucene_Field::UnStored('url', $eilute['url']));
    $index->addDocument($document);     }
$index->commit();
echo $index->count() . " documents have been indexed.\n";

但我似乎无法让 Zend 框架工作,因为我收到了这个错误:

Warning: require_once(Zend/Loader.php) [function.require-once]: failed to open stream: No such file or directory in /home/username/public_html/website/adminp/lucene.php on line 15

Fatal error: require_once() [function.require]: Failed opening required 'Zend/Loader.php' (include_path='.:/usr/lib/php:/usr/local/lib/php:/usr/local/Zend') in /home/username/public_html/website/adminp/lucene.php on line 15

我的主机安装了 zend 框架(虽然我不知道确切的版本,但我认为 hostgator 使用的是最新的,我使用的是 php5),并且支持说它在 /usr/local/Zend 目录中。

【问题讨论】:

  • 您的/usr/local/Zend 是直接库吗?比如你打开它,你就拥有了所有的框架?
  • 遗憾的是我无法访问 zend 目录以查看其内容,因为它是 Hostgator 共享主机帐户。也许关于如何上传和使用我自己的 zend 框架的任何建议......我可以将它上传到 /home/username/public_html/website/Zend 或 /home/username/public_html/Zend 目录,然后使用它没有任何问题?
  • 这个错误只是告诉你需要为 Zend Framework 实现自动加载器。如果您的 Web 主机托管 Zend Framework,他们可能有一个代码 sn-p,需要使用该代码来获得正确的路径和权限。查看stackoverflow.com/questions/1466252/…

标签: php zend-framework zend-search-lucene


【解决方案1】:

您已经使用set_include_path(); 设置包含路径,因此您位于Zend/ 目录中,如下所示:

$path = '/usr/local/Zend';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once('Zend/Loader.php');

我相信将你的最后一行改为这样应该可以:

require_once('Loader.php');

错误只是意味着它找不到您指定的文件。

【讨论】:

  • 嗯,问题可能是,我的主机使用 Zend 框架 2(似乎不再默认包含 lucene 模块)。所以问题是我如何上传和使用共享的 lucene 模块主机,我发现我可以从 github.com/zendframework/ZendSearch 下载它。谢谢我现在正在编辑代码以查看您的建议是否有效,但我相信我也会遇到 lucene 模块问题
  • P.P.S.您的建议没有帮助:(我仍然收到 loader.php 错误(... 无法打开所需的 'Loader.php' (include_path='.:/usr/lib/php:/usr/local/lib/php:/usr /local/Zend') ...) . 有什么简单的方法可以将 zend 框架文件上传到我的主机并使用它们?
  • 嗯好的。你看过setup documentation吗?
  • 谢谢,我还是找到了解决方案。附言至少对我来说,Zend 文档让人头疼 :D 有些部分非常令人困惑,尤其是对于像我这样没有经验的开发人员:)
【解决方案2】:

好的,我已经解决了。如果有人需要信息我是如何做到的,这里有详细的解释: 首先, 我下载了zend framework 1(因为第二版默认没有Lucene模块) 然后一步步使用这个:

  1. 将 Zend 框架上传到您的托管服务器(路径:root/library/Zend)

  2. 查找您的 DOCUMENT_ROOT 路径

    回显 phpinfo();

3.创建或更新您的 php5.ini 或 php.ini 文件,该文件位于您的主机帐户的 rood 目录中。 (如果您使用的是php5,则需要使用php5.ini文件)

把这一行,(如果你已经有,把这一行加到当前集合的末尾,用':'连接)

include_path = [DOCUMENT_ROOT]/Zend Path

例如)include_path = /home/content/m/i/s/misskoreabbq/html/library

现在为了测试zend是否安装好,让我们打印出zend框架版本。

require_once 'Zend/Version.php';
echo 'Your Zend Framework version = ' . Zend_Version::VERSION;

【讨论】:

    猜你喜欢
    • 2013-07-03
    • 2012-06-05
    • 2011-03-28
    • 1970-01-01
    • 2010-10-11
    • 2017-06-03
    • 2014-08-04
    • 1970-01-01
    • 2011-03-31
    相关资源
    最近更新 更多