フレームワークsymfonyの設定(Apacheかも)について教えてください。

サーバーのドキュメントルートは、c:\xampp\htdocsなのですが、symfonyではプロジェクトディレクトリの下にあるWEBというフォルダがドキュメントルートになっているようです。
ここをhttpd.confにてドキュメントルートに変えてしまえば、symfonyのプロジェクトページが綺麗に表示されるのですが、そうすると、もとのHPが表示されません。

そこで、ドキュメントルートは変えずにエイリアスだけ変えてみましたが、それだとsymfonyのプロジェクトページのCSSや画像が適用されない汚いページになってしまいます。

うまく説明できませんが、要するに、
http://www.●●●.com/
でHPを表示させ、
http://www.●●●.com/sampleproject/
で、アプリケーションを表示させたいのです。

私は、以下のようにやってみました。

mkdir c:\xampp\htdocs\sampleproject
cd c:\xampp\htdocs\sampleproject
symfony init-project sampleproject
symfony init-app bbs

httpd.confの末尾に下記を追加
Alias /sf "c:\xampp\php\pear\data\symfony\web\sf"
<Directory "c:\xampp\php\pear\data\symfony\web\sf">
AllowOverride All
Allow from All
</Directory>
<Directory "c:\xampp\htdocs\sampleproject\web">
AllowOverride All
Allow from All
</Directory>

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/11/18 09:06:53
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:t_shiono No.1

回答回数256ベストアンサー獲得回数22

ポイント23pt

PEARを使った場合のsymfonyの設定ですが、オフィシャルのドキュメントでは、

ドキュメントルート以下に設定するようになっているので、エイリアスの指定を多少変更する必要があります。

CSSなどは、ルート以下の/sfディレクトリがデフォルトとなっています。

つまり、今回の場合は、/sampleproject/sfが画像などへのパスとなっています。

しかしながら、インストールドキュメントには、/sfへのエイリアスを貼っています。

そのため、画像などが参照できなくなっています。

方法としていくつかあります。

1.コピーする

取り合えずということで、一番簡単なのは、

c:\xampp\php\pear\data\symfony\web\sf

c:\xampp\htdocs\sampleproject\web

以下にコピーしてしまいます。

symfonyのバージョンアップを考えない場合はこれが一番簡単です。

画像などはスタートアップ時しか、標準のものは使わないと思いますので、これで十分な場合も多いです。


2.シンボリックリンクを貼る

*nixであれば、

c:\xampp\php\pear\data\symfony\web\sf

c:\xampp\htdocs\sampleproject\web\sf

とシンボリックリンクを貼るのも簡単な方法です。


3.エイリアスで対処する。

Apacheの設定を次のようにして対処する

Alias /sampleproject/sf "c:\xampp\php\pear\data\symfony\web\sf"
Alias /sampleproject "c:\xampp\htdocs\sampleproject\web"

このエイリアスの順番を入れ替えるとうまくうごかないので、順番を守ってください。


参考になれば。

id:atoly

詳しくありがとうございます。

1.2ともにうまくいきました。

しかし、3はうまくいきません><

そんなページはないと言われてしまいます。

2007/11/11 21:44:03
id:tomcat_a88 No.2

回答回数48ベストアンサー獲得回数3

ポイント23pt

思いつきですが…

<Location> ディレクティブも一緒に設定してみたほうがいいんじゃないでしょうか。

id:atoly

何パターンか試してみましたが、ダメでした><

2007/11/11 21:44:55
id:t_shiono No.3

回答回数256ベストアンサー獲得回数22

ポイント22pt

3の方法で手元のLinux環境のapacheだとうまく言ったんですけどね・・・。

3の方法で駄目だったとのことですが、ページ自体が表示されないということでよいですか?

その際に、エラーログにはどのような出力がありますか?

また、

http://www.●●●.com/sampleproject/bbs_dev.php/

にアクセスするとどうですか?


あと、こちらは未確認なのですが、もう一つ方法がありそうです。

4.config/setting.ymlを編集

http://trac.symfony-project.com/wiki/InstallingSymfonyInASubDire...

Change this:

all:

.settings:

# relative_url_root:

To this:

all:

.settings:

relative_url_root: /blog

id:atoly

4の方法で動作しました!

ありがとうございます。

2007/11/18 02:14:13
id:janeiro No.4

回答回数4ベストアンサー獲得回数0

ポイント22pt

私も同じ問題で悩んでいたので解決方法を探してみました。

たどり着いた方法は、web ディレクトリを任意の場所にコピーし、web/index.php の中にある SF_ROOT_DIR の値を書き換える方法です。


例えば、c:\xampp\htdocs 以下にプロジェクトを作成すると外からファイルが丸見えになってしまうので、c:\xampp 直下にプロジェクトを作成したとします。


mkdir c:\xampp\sampleproject

cd c:\xampp\sampleproject

symfony init-project sampleproject

symfony init-app bbs


まず、web ディレクトリを外からアクセス可能な任意の位置にコピーします(ディレクトリ名の変更も可)。

例えば、c:\xampp\htdocs の下にコピーした後、bbs とディレクト名を変更したとします。


最後に、c:\xampp\htdocs\bbs\index.php(デバッグする場合はbbs_dev.phpも)内の SF_ROOT_DIR を適切に書き換えます。

今回の例だと、


define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/../../sampleproject'));


となります。


以上のようにすれば、ドキュメントルートの設定はデフォルトのままで、アプリは http://www.●●●.com/bbs/ で呼び出すことが可能です。


この辺の設定の要領が分かれば、一つのプロジェクトに複数のアプリを作った場合でも、コピーやファイル名の変更をやりくりして、何とか出来るのではと思います。


ちなみに*nixの場合はコピーの代わりにシンボリックリンクが使えるので少し楽です。

また、レンタルサーバなどでsymfonyが自由にインストール出来ない場合は、freeze コマンド(動作に必要なファイルをプロジェクトディレクトリにコピーし、単独で動作できるようにしてくれる。元に戻すには unfreeze)と、.htaccess の書き換え(RewriteBase の設定)をプラスすることで動作可能となります。

id:atoly

おお、動作しました!!

ありがとうございます^^

2007/11/18 02:13:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません