• []
  • []
  •  
  • del.icio.us 
  •  
  • Yahoo!֥åޡϿ 

xreaレンタルサーバでsymfonyを使う

PHP 求人 募集 Symfony CakePHP Smarty Ruby on Rails

xreaレンタルサーバでsymfonyを使う 概要

symfonyはPHP5用のフレームワーク。
となると利用できるレンタルサーバは現状かなり限られたものになります。

  • さくらインターネット(プロ)
  • ヘムテル
  • xrea

なかなか値段のするPHP5の使える各種レンタルサーバですが、
その中で最安のサーバがxreaです。
初心者には扱いの難しいサーバといわれていますが、
一度使うと他を使う気にはなれません。

折角なのでxreaのサーバにsymfonyを入れてみましょう。

xreaレンタルサーバでsymfonyを使う 概要

といってもインストールしなくてもsymfonyはあらかじめインストールされています。
とりあえず以下のコマンドを打ってみてください。

$ symfony

ヘルプ画面がでればsymfonyはインストールされています。

しかし、インストールされているからと言って、
おいそれと使えるほど世の中甘くありません。
xreaはApacheのモジュール版がデフォルトで利用できますが、
safe_mode動作なので無駄に制限が多く、
ほとんどのソフトウェアは動きません。
symfonyも例外ではなく、
通常の方法ではちゃんと動きません。

ここでは通常の方法で引っかかってしまう場所を列挙します。
プロジェクト、アプリケーション、モジュールの作成手順は通常の方法を全く同じなので、
symfonyプロジェクト作成を参考にしてください。

CGI版のPHPに切り替える

外部からwebでアクセスできるようになってからが問題です。
まずは標準状態で利用されるApacheモジュール版のPHPですが、
セーフモードで実装されているため、
キャッシュ、ログのファイル書きだしができません。
なので、CGI版のモジュールを利用するように切り替えます。
.htaccessに以下の記述を追加。

AddHandler application/x-httpd-phpcgi .phtml

なんで.phtml?というのは次の節を読んでください。

PHPの拡張子を変更する

PHPのデフォルト拡張子は.phpですが、
.phpで利用することは出来ません。
一見使えるように見えるのですがPATHINFOを利用した途端エラーがでます。
これは.phpがApacheのモジュールで占有されているから・・・と推測されますが原因は不明です。

回避方法は拡張子を変更することです。
今回は.phtmlとしていますが、
基本的には何でも構いません。
(.cgiは避けた方が良いと思いますが。)
index.phpをindex.phtmlとし、 .htaccessの記述を変更します。

RewriteRule ^(.*)$ index.phtml [QSA,L]

SCRIPT_NAME削除

何故このようになっているのかは不明ですが、
HTML上でPATHを生成するのにSCRIPT_NAMEを使用しています。
例えばcssやjavascriptを設置するために、

<?php include_metas() ?>

とすると、 リンク先がScript_NAME + 指定パスになります。

SCRIPT_NAMEは文字通りスクリプトの場所を指しているわけで、
ファイル名がindex.phtmlだとすると、
パスが/index.phtml/css/style.cssといった具合になってしまいます。

これではまともに使えないのでSCRIPT_NAMEを変更します。
webディレクトリがドキュメントルートになっている場合(http://dozo.matrix.jp/のように)は
/apps/myapp/config/config.php

$_SERVER["SCRIPT_NAME"] = "";

webディレクトリがドキュメントルートになっていない場合(http://dozo.matrix.jp/myprojectのように)は
ディレクトリ名を指定します。
/apps/myapp/config/config.php

$_SERVER["SCRIPT_NAME"] = "/myproject";

framework/symfony/xrea.txt · 最終更新: 2007/07/10 01:17 by dozo