質問: フレームワークsymfonyの設定(Apacheかも)について教えてください。 サーバーのドキュメントルートは、c:\xampp\htdocsなのですが、symfonyではプロジェクトディレクトリの下にあるWEBというフォルダがドキュメントルートになっているようです。 ここをhttpd.confにてドキュメントルートに変えてしまえば、symfonyのプロジェクトページが綺麗に表示されるのですが、そうすると、もとのHPが表示されません。 そこで、ドキュメントルートは変えずにエイリアスだけ変えてみましたが、それだとsymfonyのプロジェクトページのCSSや画像が適用されない汚いページになってしまいます。 うまく説明できませんが、要するに、 ●●●.com/ でHPを表示させ、 ●●●.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" AllowOverride All Allow from All AllowOverride All Allow from All
回答: 私も同じ問題で悩んでいたので解決方法を探してみました。 たどり着いた方法は、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')); となります。 以上のようにすれば、ドキュメントルートの設定はデフォルトのままで、アプリは ●●●.com/bbs/ で呼び出すことが可能です。 この辺の設定の要領が分かれば、一つのプロジェクトに複数のアプリを作った場合でも、コピーやファイル名の変更をやりくりして、何とか出来るのではと思います。 ちなみに*nixの場合はコピーの代わりにシンボリックリンクが使えるので少し楽です。 また、レンタルサーバなどでsymfonyが自由にインストール出来ない場合は、freeze コマンド(動作に必要なファイルをプロジェクトディレクトリにコピーし、単独で動作できるようにしてくれる。元に戻すには unfreeze)と、.htaccess の書き換え(RewriteBase の設定)をプラスすることで動作可能となります。