1

I am looking at downloading and learning Symfony 2. I haven't really looked at a PHP framework before.

I'm aware discussion isn't allowed on here, but I'm pretty certain my question isn't subjective and there's an obvious clear answer to my question.

Why is Symfony 2 downloaded into the public web root?

Surely it should be non-public and only HTML/CSS etc should be public?

Obviously I'm wrong, but would appreciate the reason for this.

Doesn't that mean that somebody can go to http://mysite.com/symfony/classes/database.php etc. (not a specific URL, but just to highlight my point) and run various scripts? Obviously that's probably just a class file, but it still doesn;t seem right to me.

Also, I want to run say 5 or 6 different sites on the same framework. If it's installed in the web root then doesn't that mean I need to install the entire Symfony code base for each site (in each site's web root) - where as if it was hosted outside the web root then each site can reference that (e.g. '../../symfony/classes/database.php' etc.) (as long as on all sites are on the same server).

I must me missing something very clear and obvious.

4

3 に答える 3

8

多くのフレームワークはすべてのコードを Web ルートに配置しますが、Symfony はそうしません。

代わりに、標準ディストリビューションには /web フォルダーがあり、これを webroot にする必要があります。

Webroot を Symfony プロジェクト フォルダー内に構成できないサーバーを使用している場合は、代わりに Webroot フォルダーと Symfony Web フォルダーの間のシンボリック リンクを使用できます。これは、共有ホスティング プランなどの一般的な方法です。

于 2013-03-07T23:45:24.980 に答える
1

Symfony の経験はあまりありませんが.htaccess、ルート ディレクトリにファイルがあり、おそらく次のような行があると思います。

RewriteRule ^$ web/app.php

つまり、ルート ディレクトリへのすべてのリクエストが /web/app.php ファイルにリダイレクトされます。残念ながら、そのファイル以外には誰も行くことができません。

他の人が指摘しているように、本番環境では、より厳しいセキュリティ上の考慮事項のために、webroot を /web ディレクトリにポイントする必要があります。上記の私の答えは、すぐに使えるように機能する理由を指摘しようとしただけです。

于 2013-03-07T23:30:38.453 に答える
0

フレームワーク データをサーバーに配置するときは、公開する必要があります。publicVirtual Hosts経由でVPSサーバー上でフォルダーのみがポイントされ、パブリックとして表示されます。Symfony のパブリック フォルダーはweb、index.php をロードする仮想ホストを指す必要があるためです。

これについてもっと見てください:Symfony 1.4の「web」フォルダーの名前を変更する

symfony2 にドキュメント ルートを設定する方法の例: symfony2 のインストール手順のヘルプを参照してください

バージョン 2 は 1.4 と似ています。必要なのはパスを指すだけだからです。

于 2013-03-07T23:27:54.093 に答える