Как включить библиотеки Zend Framework в мой домен? - PullRequest
2 голосов
/ 10 марта 2010

Локально, в моей установке xampp, папка Zend находится в PEAR \ Zend, а Pear находится в пути include. Поэтому, когда я выполняю require_once "Zend \ Date.php", проблем не возникает.

Однако в моем домене (Hostmonster) это не так. Я понятия не имею, где находится папка Zend, хотя делаю phpinfo (); похоже, указывает на то, что Zend Framework определенно доступен. Я попросил хоста, и они сказали мне включить zend_extension = "/ usr / local / Zend / lib / Optimizer-3.3.9 / php-5.2.x / ZendOptimizer.so" внизу файла php.ini, который не помогло вообще.

Кроме того, я не знаю, что вообще делает это утверждение в файле php.ini. Может ли кто-нибудь помочь, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 10 марта 2010

Включение расширения 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, я думаю.

2 голосов
/ 10 марта 2010

Возможно, вы могли бы загрузить библиотеку Zend в свою учетную запись общего хостинга в каталоге, например /home/your_account/public_html/zend.

Затем измените (или создайте, если он не существует) файл php.ini в вашем каталоге webroot / home / your_account / public_html. Добавить следующее:

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

Примечание: это переопределит любые пути включения по умолчанию, установленные PHP. . представляет текущий каталог, а : разделяет различные пути.

Теперь в вашем PHP-файле вы можете добавить вверху:

require_once 'Zend/Date.php';
0 голосов
/ 26 марта 2015

Автозагрузчик 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 минимум

...