質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

7905閲覧

CakePHPをDocumentRoot以外に配置した際のアクセス方法

dpjgt4034

総合スコア13

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

1クリップ

投稿2016/08/31 16:28

編集2016/09/01 00:31

こんばんは。
この度はCakePHPの本体をDocumentRoot以外に配置した際の
CakePHPへのURLからのアクセス方法についてお聞きしたいと思っています。

サーバーはCentOS、CakePHPは2.4.9を使用しています。

まずサーバーの公開ディレクトリ(DocumentRoot)が以下のように
htmlディレクトリ配下だとします。
/var/www/html

その上で、CakePHP本体を公開ディレクトリに置くのはセキュリティ上
まずいため、CakePHP本体が入っているフォルダである「app」を
公開ディレクトリhtmlのひとつ上の階層の非公開ディレクトリのwwwの中の
webappというディレクトリ内に配置するとします。
/var/www/webapp/app

次に、このままではCakePHPのwebrootにアクセスできなくなってしまうと
考えたので公開ディレクトリのhtmlに非公開ディレクトリ内への
シンボリックリンクをLinuxの「ln -s」コマンドにて下記のように作成しました。
/var/www/html/linktocake

上記にて、www.example.com/linktocakeというURLを叩いた際に
CakePHP内のwebrootへアクセスすることができました。

しかしながら、現状webrootへアクセスはできるのですが、このままでは
CakePHPを非公開ディレクトリ内に置いてしまったため
下記のように各Controllerのアクションへアクセスできなくなってしまいました。
www.example.com/user/index

Controllerのアクションへアクセスするためには
同様に、公開ディレクトリ配下にCakePHP本体が入っているappディレクトリへの
シンボリックリンクを同様に作成すればよろしいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

CakePHP は公開ディレクトリに置かれることを想定しており、.php のファイルが正しく PHP として実行される状態であればセキュリティ上の問題はありません。(逆に PHP として実行されずにテキストファイルとして表示されてしまうのであれば設定に問題があるので確認してください)

ということでシンボリックリンクは解除します。

lang

1unlink /var/www/html/linktocake

またリダイレクトについてですが Apache でルートディレクトリに設置するのであれば CakePHP に付属している .htaccess をそのまま使うことができます。たとえば次のファイルを /var/www/html に設置します。

lang

1RewriteEngine On 2RewriteRule ^$ app/webroot/ [L] 3RewriteRule (.*) app/webroot/$1 [L]

これは余談ですが URL を例示する際は example.com などを使用するようにしましょう。URL の例示を目的として開設されているため、ドメインが所有されていないか考えずに済みます。

投稿2016/09/01 00:04

chitoku

総合スコア1610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dpjgt4034

2016/09/01 00:30

早速のコメントをありがとうございます。 なるほど、ドキュメントルート下にCakePHP本体は置かないほうがいいと思っていましたが、そうではないのですね。 確認ですが、CakePHPが格納されているディレクトリ(今回ならばappディレクトリ)には、ConfigやLibディレクトリなど見られてはマズいファイルも入っています。 これらのセキュリティ面のリスクについては、仰るように.htaccessやPHPファイルが正しく設定されている(画面にコードが出力されない)状態であれば、特に問題はないと考えてよろしいでしょうか? また、URLの指定方法についてもご指摘ありがとうございます。今後そのようにします。
chitoku

2016/09/01 06:16

その通りです! 設定ファイルを Web サーバーが参照する必要があります。
dpjgt4034

2016/09/01 07:51

承知しました、ありがとうございました!
KatsumiTanaka

2016/09/01 15:45

セキュリティ面ですが、自分はCakePHPを利用したECサイトの構築に携わったことがあります。 クレジットカード情報を扱うため、セキュリティアドバイザーの脆弱性テストも実施しましたが、設定等を除くプログラミングの観点では、XSS、CSRF、SQLinjection対策を強く言われました。 また、サーバ自体はDMZに設置してありますが、余計な情報(テスト用のページや、PHPinfoなど)が表示されなければ、サーバの設置位置やCakePHPの配置に対して、特に指摘はありませんでした。 ご参考までに
guest

0

Web サーバーには何をお使いですか?(Apache、nginx など)
各サーバーに応じてリライトの設定を行ってください。
例えば Apache なら .htaccess をディレクトリ内に設置することで制御できます。

投稿2016/08/31 22:05

chitoku

総合スコア1610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dpjgt4034

2016/08/31 23:27

WebサーバーはApatchになります! 例えば.htaccessはどのような記載になりますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問