Как загрузить классы Zend при запуске php-скрипта по командам

У меня есть PHP-скрипт, требующий классов Zend. Его можно запустить в браузере, но возникают ошибки при запуске сценария по командам в командной строке.

require_once 'Zend/Loader.php'; // It can work in a browser but failed by command lines 

Я также пробовал:

 require_once 'C:\wamp\www\zf_project\library\Zend\Loader.php'; 

а также

 ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . dirname(__FILE__). DIRECTORY_SEPARATOR. 'library'); 

Но не удалось.

Затем мне нужно загрузить класс:

 Zend_Loader::loadClass('Zend_Rest_Client'); 

Как я могу использовать классы Zend?

Заранее спасибо!

Если вы хотите только использовать классы Zend с помощью автоматической загрузки – без загрузки всего вашего приложения – все, что вам нужно сделать в ZF1 (которое, как вам кажется, используется):

 <?php // if ZF is not in your include path to begin with set_include_path(implode(PATH_SEPARATOR, array('/path/to/zend/library', get_include_path()))); include 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance(); // registers autoloader // now can access Zend classes without having to include $client = new Zend_Http_Client(...); 

Также обратите внимание: вам не нужно вызывать Zend_Loader::loadClass для загрузки класса, это делается автоматически автозагрузчиком, когда вы используете имя класса в обычном коде, например, вызывая конструктор, как я сделал выше.

Когда вы запускаете его из веб-браузера, путь include устанавливается в public / index.php, а затем загружается приложение. Аналогично, вы можете скопировать public / index.php (например, как setup.php) и включить его в код командной строки. Кроме того, скопируйте загрузочные биты, которые вам нужны, в этот файл.

Обратите внимание, что в ZF2 существует «консольный маршрут», который позволяет создавать сценарий командной строки MVC.

Вот мой setup.php, обратите внимание, как я загружаю конфигурацию с помощью «нового Zend_Config». Просто «требуется» этот файл в файле, который вы хотите запустить из командной строки (консоли).

Изменить : вы должны правильно установить APPLICATION_PATH в '/ relative / path / to / application /'.

 <?php error_reporting(E_ALL & ~E_NOTICE | E_STRICT); // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/relative/path/to/application/')); // Define application environment define('APPLICATION_ENV', 'development'); defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); require_once 'Zend/Application.php'; $app = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'); $res = $app->getOption('resources'); $config = new Zend_Config($res);