Похоже, у вас проблемы с PATH
в командной оболочке Windows. Это не зависит от Zend Framework. Понимание концепции PATH
в среде оболочки является препятствием, которое приходится преодолевать многим программистам, но как только вы его получите, вы можете использовать его для повышения производительности.
Вы всегда можете запустить программу из командной оболочки, используя абсолютный путь этой программы . Например:
C:\> c:\wamp\bin\php\php.exe
Вы также можете запустить команду, используя относительный путь . То есть вы вводите путь от вашего текущего рабочего каталога до местоположения программы, которую вы хотите запустить.
C:\> cd c:\wamp
C:\> bin\php\php.exe
Но если вы запускаете команду в командной оболочке без с указанием полного пути к исполняемому файлу, оболочка пытается найти исполняемый файл программы в одном из каталогов, перечисленных в переменной среды PATH
. То есть путь представляет собой строку с именами каталогов, разделенными точками с запятой. Чтобы запустить исполняемый файл, оболочка пробует каждый каталог в этом списке по порядку, как если бы вы имели
C:\> type %PATH%
C:\WINDOWS\;C:\WINDOWS\SYSTEM32
C:\> php.exe
...error that it cannot find php.exe...
Особый случай: запуск php.exe
также работает, если текущим рабочим каталогом является местоположение исполняемого файла этой программы. Но это всего лишь пример использования относительного пути, использования пути с нулевыми уровнями каталога.
Вторая проблема в том, что вы запускаете zf.bat
, который в свою очередь вызывает php.exe
без указания пути. Предполагается, что вы добавили местоположение php.exe
в переменную окружения PATH
.
C:\> SET PATH=%PATH%;C:\wamp\bin\php
C:\> php.exe -v
PHP 5.3.1 (cli) (built: Nov 29 2009 13:59:20)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
Также необходимо найти сам скрипт zf.bat
. Вы можете сделать это, добавив каталог, в котором он находится, к вашему PATH
. Предполагая, что вы установили Zend Framework в C:\zf
, например:
C:\> type %PATH%
C:\WINDOWS\;C:\WINDOWS\SYSTEM32;C:\wamp\bin\php
C:\> zf.bat
...error that it cannot find zf.bat...
C:\> SET PATH=%PATH%;C:\zf\bin
C:\> zf.bat show version
Zend Framework Version: 1.10.0dev
Я бы также рекомендовал установить Zend Framework вне вашего htdocs
каталога. Под htdocs
вам нужен только один файл PHP: это единственный файл начальной загрузки, который Zend Framework использует для создания экземпляра Front Controller и отправки запроса.
Когда вы используете zf.bat
для создания скелетного приложения, оно создает каталог public
с PHP-скриптом index.php
внутри этого каталога. Этот файл index.php
должен быть в вашем каталоге htdocs
. Вам также нужны ресурсы, такие как CSS, Javascript и изображения, чтобы быть под htdocs
. Остальной код вашего приложения и весь Zend Framework должны быть вне вашего htdocs
. Особенно любые файлы конфигурации, где вы храните конфиденциальные данные, такие как пароль вашей базы данных и т. Д.
Вы можете редактировать файл index.php
. Он может определять PHP-константу APPLICATION_PATH
, которая является местоположением остальной части кода вашего приложения.
<?php
defined("APPLICATION_PATH")
|| define("APPLICATION_PATH", realpath(dirname(__FILE__) . "/../application"
));
Это определение по умолчанию для APPLICATION_PATH
предполагает, что ваш htdocs
является дочерним каталогом для остальной части кода вашего приложения, сгенерированного инструментом zf.bat
. Конечно, вы можете поместить код своего приложения в любое другое место, но вам нужно изменить приведенный выше код, чтобы скрипт index.php
нашел его.
Также сценарий index.php
может добавить местоположение библиотечного кода в PHP INCLUDE_PATH
. Это полезно, если вам нужно сделать библиотеку Zend Framework доступной для поиска или если в вашем приложении используется другой сторонний PHP-код. Предполагая, что вы установили Zend Framework в C:\zf
, вы должны добавить его подкаталог library
в ваш PHP INCLUDE_PATH
.
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
"C:/zf/library",
realpath(APPLICATION_PATH . "/../library"),
get_include_path()
)));
Шаблоны кода, сгенерированные сценарием zf.bat
, пытаются сделать разумные предположения по умолчанию о том, где находится ваш код, но ваша среда принадлежит вам, и эти сценарии легко редактировать, чтобы указать истинное место, где вы установили свой код и библиотеки.