【问题标题】:How do I include Zend Framework libraries in my domain?如何在我的域中包含 Zend Framework 库?
【发布时间】:2011-01-25 17:45:47
【问题描述】:

在本地,在我的 xampp 安装中,Zend 文件夹位于 PEAR\Zend 下,而 Pear 位于包含路径中。所以当我做 require_once "Zend\Date.php" 时没有问题。

但是,在我的域 (Hostmonster) 上,情况并非如此。我不知道 Zend 文件夹在哪里,虽然在做 phpinfo();似乎表明 Zend Framework 绝对可用。我问了主机,他们告诉我在 php.ini 文件的底部包含 zend_extension="/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.x/ZendOptimizer.so" ,它一点帮助都没有。

另外,我什至不知道 php.ini 文件中的那个语句是做什么的。有人可以帮忙吗?

【问题讨论】:

    标签: php zend-framework include-path


    【解决方案1】:

    也许您可以将 Zend 库上传到 /home/your_account/public_html/zend 等目录中的共享主机帐户。

    然后在您的 webroot 目录 /home/your_account/public_html 中修改(或创建,如果它不存在)一个 php.ini 文件。添加以下内容:

    include_path = .:/home/your_account/public_html/Zend
    

    注意:这将覆盖 PHP 设置的任何默认包含路径。 . 代表当前目录,: 分隔不同的路径。

    现在您可以在 PHP 文件的顶部添加:

    require_once 'Zend/Date.php';
    

    【讨论】:

      【解决方案2】:

      如上所述启用 Zend 扩展与包含您想要执行的 ZF 类无关。下载 ZF 并将其上传到 public_html 文件夹中您喜欢的任何位置(如果某处尚不可用)。使用set_include_path() 去吧!下面的示例代码:

      <?php
          // Define relative path to ZendFramework in public_html
          define('ZF_PATH', '/../../../lib/php/zendframework');
      
          // Define path to application directory
          defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
      
          // Define real path to ZendFramework if it's not yet included in include_path
          if(!strpos(get_include_path(), 'zendframework'))
              define('ZF_REAL_PATH', realpath(APPLICATION_PATH . ZF_PATH));
          else define('ZF_REAL_PATH', '');
      
          // Updating include_path
          set_include_path(implode(PATH_SEPARATOR, array(ZF_REAL_PATH, get_include_path(),)));
      
          // Done! the rest of the code might be unnecessary in your case.
          require 'Zend/Application.php'; 
      
          // Create application, bootstrap, and run
          $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
          $application->bootstrap()->run();
      

      对于添加目录来包含路径的情况,这可能看起来有点复杂,但我认为这是 ZF 应用程序最常用的方式。

      【讨论】:

        【解决方案3】:

        zend 自动加载器让生活更轻松:

        set_include_path(get_include_path().PATH_SEPARATOR.realpath('../path to folder containing zend classes'));
        require_once('Zend/Loader.php');
        require_once('Zend/Loader/Autoloader.php');
        Zend_Loader::registerAutoload();
        

        现在您不需要几十个包含,也不需要弄乱您的代码... 从 Zend 开始:至少 1.11.1

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-13
          • 1970-01-01
          相关资源
          最近更新 更多