人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

フレームワーク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>



●質問者: atoly
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ALL Apache BBS CD CSS
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● t_shiono
●23ポイント

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"

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


参考になれば。

◎質問者からの返答

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

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

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

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


2 ● tomcat_a88
●23ポイント

思いつきですが…

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

◎質問者からの返答

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


3 ● t_shiono
●22ポイント

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

◎質問者からの返答

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

ありがとうございます。


4 ● puffin
●22ポイント

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

たどり着いた方法は、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 の設定)をプラスすることで動作可能となります。

◎質問者からの返答

おお、動作しました!!

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ