symfonyの環境をWindowsへ構築
しばらくsymfonyに関して、書いて行こうと思うので、Windowsにsymfonyの環境を作ることにしました。
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
Apacheのhttpd.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