WindowsコマンドシェルのPATH
に問題があるようです。これは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
を実行しても動作します。しかしこれは、ディレクトリレベルがゼロのパスを使用した相対パスの使用例です。
第2の問題は、パスを指定せずにphp.exe
を呼び出すスクリプトであるzf.bat
を実行していることです。環境変数PATH
にphp.exe
の場所を追加したものとします。
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 Frameworkのインストールと仮定:
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
私はまた、あなたのhtdocs
ディレクトリ外Zend Frameworkのをインストールすることをお勧めします。 htdocs
に必要なPHPファイルは1つだけです。つまり、Zend FrameworkがFront Controllerをインスタンス化してリクエストをディスパッチするために使用する単一のブートストラップファイルです。
zf.bat
を使用してスケルトンアプリケーションを生成すると、public
ディレクトリにそのディレクトリ内にPHPスクリプトindex.php
が作成されます。このindex.php
ファイルは、htdocs
ディレクトリにある必要があります。 htdocs
には、CSS、Javascript、画像などのアセットが必要です。残りのアプリケーションコードとZend Framework自体はの外にあり、の外側にはhtdocs
があります。特に、データベースのパスワードなどの機密データを保存するすべての設定ファイル
index.php
ファイルを編集できます。 PHP定数APPLICATION_PATH
を定義することができます。これはアプリケーションコードの残りの部分の場所です。 APPLICATION_PATH
のデフォルトの定義は、あなたのhtdocs
がzf.bat
ツールによって生成されたアプリケーションコードの残りの姉妹ディレクトリであることを前提として
<?php
defined("APPLICATION_PATH")
|| define("APPLICATION_PATH", realpath(dirname(__FILE__) . "/../application"
));
。あなたは確かに他の場所にあなたのアプリケーションコードを置くことができますが、index.php
スクリプトがそれを見つけるように上記のコードを変更する必要があります。
また、index.php
スクリプトは、PHPのINCLUDE_PATH
にライブラリコードの場所を追加することがあります。これは、Zend Frameworkライブラリを見つけることができるようにする必要がある場合、またはアプリケーションで他のサードパーティのPHPコードを使用する必要がある場合に便利です。 Zend FrameworkをC:\zf
の下にインストールしたと仮定すると、そのlibrary
サブディレクトリをPHP INCLUDE_PATH
に追加する必要があります。 zf.bat
スクリプトによって生成さ
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
"C:/zf/library",
realpath(APPLICATION_PATH . "/../library"),
get_include_path()
)));
コードテンプレートは、あなたのコードがどこにあるかについての賢明なデフォルトの推測をしようが、あなたの環境があなた自身であり、あなたがインストールされ、真の場所を指定するには、これらのスクリプトを編集するのは簡単ですあなたのコードとライブラリ。
あなたのためにうまくいくソリューションを見つけてうれしいです。 PHPを楽しんでください! –
php.exe、zf.bat、およびZFライブラリを含む環境変数を設定したら、パスを有効にするにはコマンドプロンプトを再起動する必要があります。 「OK」をクリックすると、パスの変更がWindows全体でブロードキャストされますが、アプリケーションを再起動してそのアプリケーションに影響を与える必要があります。 – musicliftsme