看起来您在Windows命令shell中遇到了PATH
问题。这与Zend Framework无关。在shell环境中理解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
来完成此操作。假设你C:\zf
下安装Zend框架,例如:
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代码,这非常有用。假设您在C:\zf
下安装了Zend Framework,则应该将其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
脚本生成的代码模板,尽量让了解您的代码位于合理的默认猜测,但你的环境是你自己的,并可以很容易地修改这些脚本以指定安装的真正位置你的代码和库。
很高兴您找到了适合您的解决方案。用PHP玩得开心! – 2009-12-16 19:50:47
我只想补充说,一旦你设置你的环境变量来包含php.exe,zf.bat和ZF库,你将需要重新启动命令提示符以使路径生效。看起来,一旦您点击“确定”,路径中的更改就会在整个Windows中广播,但您需要重新启动应用程序才能在该应用程序中生效。 – musicliftsme 2011-07-15 05:18:30