symfonyの環境をWindowsへ構築

しばらくsymfonyに関して、書いて行こうと思うので、Windowssymfonyの環境を作ることにしました。

PHPを下記のサイトからダウンロードしてきます。
PHP: Downloads

ファイルをC:/project/php/php-5.2.14に展開後、下記の作業を行います。

  • Windows環境変数(path)に「C:/project/php/php_5.14」を通しておきます。
  • 「php5ts.dll」をC:/WINDOWSにコピーします。
  • php.ini-dist」をC:/WINDOWSに「php.ini」に名前を変更しコピーします。

php.iniの編集
include_pathの設定

;include_path= ".;c:\php\includes"
↓
include_path= ".;C:/project/php/php-5.2.14/includes"

extensionの設定

extension_dir= "./"
↓
extension_dir= "C:/project/php/php-5.2.14/ext"

doc_rootの設定

doc_root = <Apache2インストールディレクトリ>/htdocs
→Apache 2.x のhtdocsを指定します。

必要なライブラリの設定

;extension=php_mbstring.dll
;extension=php_pdo.dll
;extension=php_pdo_oci8.dll
;extension=php_soap.dll
;extension=php_xsl.dll
.....
→必要なライブラリのコメントアウトを解除する。

mbstringの設定

;mbstring.language = Japanese
→コメントアウトを解除
;mbstring.internal_encoding = UTF-8
→コメントアウトを解除し、文字コードを設定する。
;mbstring.http_output = UTF-8
→コメントアウトを解除し、文字コードを設定する。

Apacheの設定
httpd.confに下記の設定を追加します。

Action application/x-httpd-php "C:/project/php/php-5.2.14/php.exe"
AddType application/x-httpd-php .php
LoadModule php5_module C:/project/php/php-5.2.14/php5apache2_2.dll

PEARのインストール

C:\project\php\php-5.2.14>go-pear

PEARのアップグレード

C:\project\php\php-5.2.14>pear upgrade pear

symfonyのchannel登録

C:\project\php\php-5.2.14>pear channel-discover pear.symfony-project.com

symfonyのインストール

C:\project\php\php-5.2.14>pear install symfony/symfony

ORMは、Doctrineを利用し、DBは、Oracleで行こうと思っているので、一部修正が必要です。
Doctrineで、Oracleを扱う場合、schema.ymlを生成する時に、timestampで、エラーになってしまうので、
下記のディレクトリにあるOracle.phpを修正します。

C:\project\php\php-5.2.14\symfony\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\DataDict

修正方法は、下記の様に修正を行います。

    public function getPortableDeclaration(array $field)
    {
        if ( ! isset($field['data_type'])) {
            throw new Doctrine_DataDict_Exception('Native oracle definition must have a data_type key specified');
        }
        
        $dbType = strtolower($field['data_type']);
        $type = array();
        $length = $unsigned = $fixed = null;
        if ( ! empty($field['data_length'])) {
            $length = $field['data_length'];
        }

        if ( ! isset($field['column_name'])) {
            $field['column_name'] = '';
        }

        // この部分を追記
        if (preg_match('/timestamp/',$dbType)) {
        	$dbType= 'timestamp';
        }

symfonyの動作確認の為、symfonyプロジェクトを作成
symfonyのプロジェクト用のディレクトリを作成します。

C:\project\workspace>mkdir mypj

symfonyのプロジェクトを作成します。

C:\project\workspace>cd sfproject
C:\project\workspace\mypj>symfony generate:project sfproject

Symfony 1.2の場合、デフォルトのOR/MがPropelの為、切り替えが必要です。
Symfony 1.4を使う場合は、不要です。
切り替え方法は、「C:/project/workspace/mypj/config/ProjectConfiguration.class.php」を編集します。

<?php
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
	$this->enablePlugins(array('sfDoctrinePlugin'));
	$this->disablePlugins(array('sfPropelPlugin'));
  }
}

編集後、キャッシュのクリアを行います。

C:\project\workspace\mypj>symfony cc

下記の不要なファイルを削除します。

  • C:/project/workspace/mypj/config/database.yml
  • C:/project/workspace/mypj/config/schema.yml
  • C:/project/workspace/mypj/propel.ini

Doctrineのschema.ymlを格納するディレクトリを作成します。

C:\project\workspace\mypj\config>mkdir doctrine

DoctrineのPluginを有効にします。

C:\project\workspace\mypj>symfony plugin:publish-assets

アプリケーションを作成します。

C:\project\workspace\mypj>symfony init-app content

Apachehttpd.confを下記のように編集します。

<VirtualHost *>
	DocumentRoot "C:/project/workspace/sfproject/web"
	ServerName   localhost
	<Directory "C:/project/workspace/sfproject/web">
		Options FollowSymLinks
		AllowOverride ALL
		Order deny,allow
		Allow from all
	</Directory>
	Alias /sf "<PHP Install Dir>/data/symfony/web/sf"
	<Directory "<PHP Install Dir>/data/symfony/web/sf">
		AllowOverride All
		Allow from All
	</Directory>
</VirtualHost>

下記へアクセスして、symfonyプロジェクトの画面が表示されることを確認します。
http://localhost/content_dev.php