解決方法:cakephpでのHTTP403エラーの回避方法とは?

このQ&Aのポイント
  • 初心者ですが、レンタルサーバーを変更し、cakephpを利用している既存のデータ等をそのまま新しいサーバーに移動したのですが、URL:hhtp://www.○○○.jpでHTTP403のエラーが出てしまいます。
  • CAKEPHPはドメイン直下に配置し、webrootもフォルダ内にあります。レンタルサーバのため、apacheの編集もできません。(ディレクトリの変更などもできません)
  • HTACCESSファイルの設定やフォルダのパーミッションの変更などを試したが解決しない。HTTP403のエラーの回避方法を教えてください。
回答を見る
  • ベストアンサー

cakephp HTTP403エラー

初心者ですが、レンタルサーバーを変更し、cakephpを利用している既存のデータ等をそのまま新しいサーバーに移動したのですが、URL:hhtp://www.○○○.jpでHTTP403のエラーが出てしまいます。 但し、URL:hhtp://www.○○○.jp/cakephp/ ではエラーは出ず、レイアウトがズレて表示されます。(CSSのパスの原因で)。またデータベースのデータも表示されます。 CAKEPHPはドメイン直下に配置し、webrootもフォルダ内にあります。 レンタルサーバのため、apacheの編集もできません。(ディレクトリの変更などもできません) いろいろ調べて、cakephp内の3つの「.htaccess」のmod_rewrite、app/temp/のパーミッション等の変更も試しましたが、うまくいきません。 HTTP403のエラーの回避方法を教えてください。よろしくお願いいたします。 ・APACHE :2.x ・PHP    :5.3 ・MYSQL  :5.1

質問者が選んだベストアンサー

  • ベストアンサー
  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

>php、mysql等に何らかの、初期設定が必要なのでしょうか? mod_rewriteはApacheのモジュールです。 大本の設定ファイルを書き換える必要があるので、管理者権限が必要となります。 レンタルサーバでmod_rewriteがサポートされていないのであれば、諦めるしか無いでしょう。 ただ、lolipopはmod_rewriteを使えるようです。 以下など参考になりませんか? http://lolipop.jp/manual/other/cakephp/ http://d.hatena.ne.jp/g2_girichan/20110502/1304303500

kkazuuu
質問者

お礼

ご回答ありがとうございます。 3つの.htaccessも再確認いたしましたが、同じになっています。 URL:hhtp://www.○○○.jp/cakephp/では、レイアウトがずれるものの、データベースの値等も表示されます。 >mod_rewriteはApacheのモジュールです。 大本の設定ファイルを書き換える必要があるので、管理者権限が必要となります。 URL:hhtp://www.○○○.jp/cakephp/ では管理者権限があって、 URL:hhtp://www.○○○.jp/ では管理者権限がないということでしょうか? または、URL:hhtp://www.○○○.jp/ は cakephpディレクトリと認識されていているが管理者権限がないということでしょうか?

kkazuuu
質問者

補足

LOHAさん、いろいろありがとうございました。おかげさまで、解決いたしました。 当方のミスで、ドキュメントルートに、「.htaccess」「index.php」がありませんでした。 /cakephp |-app |-config |-controllers |-models |-plugins |-tmp |-vendors |-views |-webroot(Web公開用ディレクトリ)       .htaccess    index.php .htaccess index.php |-cake(CakePHP コアライブラリ) |-vendors .htaccess index.php / .htaccess   ※webrootの.htaccessと同じ / index.php  ※下記の2行に変更   if (!defined('ROOT')) {define('ROOT', dirname(__FILE__) . DS . 'cakephp');}   if (!defined('APP_DIR')) {define('APP_DIR', 'app');}   その他はwebrootのindex.phpと同じ で正常に表示できるようになりました。  参考:http://www.a24loveweb.net/cake/%E6%9C%AC%E7%95%AA%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95%EF%BC%88%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%83%AB%E3%83%BC%E3%83%88%E3%81%8C/

その他の回答 (1)

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.1

403エラーなのでしたら、おそらく .htaccess の mod_rewrite の設定に何か問題があるのだと思います。 レンタルサーバの事情にもよるので、使用しているレンタルサーバの情報も記述したほうがよいでしょう。 http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2255&forum=3 とりあえずmod_rewriteなしで動作するかどうかを確認してみてはいかがでしょうか? http://asaton.seesaa.net/article/31279683.html phpinfoでmod_rewriteが使えるかも確認すると良いかもしれません。

kkazuuu
質問者

お礼

ご回答有難うございます。 phpinfoで確認しましたが、mod_rewriteは有りませんでしたので 「mod_rewriteなし」での方法を行いました。 /app/config/core.php 40行目の // define ('BASE_URL', env('SCRIPT_NAME')); のコメントアウトをはずす core.php に「// define ('BASE_URL', env('SCRIPT_NAME'));」が 無かったので、40行目に追加し、 /,/app,/webrootの.htaccessを削除 しましたが、直りませんでした。 以前のサーバ(障害により初期化されたサーバー)にも、既存のデータをアップロードをしたのですが、同じ状況でした。 php、mysql等に何らかの、初期設定が必要なのでしょうか?

kkazuuu
質問者

補足

すいません。レンタルサーバー会社は下記の通りです。 レンタルサーバー会社:lolipop OS:Redhat系 Linux WEBサーバー:Apache PHP    :5.3 MYSQL  :5.1 cakephp  :v 0.2.9

関連するQ&A

  • CakePHP1.2でCSSが適用されない

    レンタルサーバーはXREAで、 PHP Version 4.4.8 + CakePHP 1.2.0.7692 RC3 + Apache 10337100 を使っています(phpinfo()にて取得)。 http://d.hatena.ne.jp/Yukkuri/20080519/1211221064 こちらのサイトを参考に接地し、CakePHPのスタート画面は出たのですが、 スタイルシートや画像が適用されてくれません。 mod_rewrite関係だと思うのですが、phpinfo()を見る限りでは mod_rewriteは読み込まれているようです。 .htaccessは以下のようになっています。 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /cgi/anketo/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> 他に設定すべき項目などありましたら教えていただけないでしょうか。

    • 締切済み
    • PHP
  • CakePHPの .htaccess設定について

    CakePHPをVPSで構築したサーバー(Linux)にインストールしました。 .htaccess(mod_rewrite)の設定がうまくいっていないようなので対処の方法を教えてください。 [環境] PHP 5.3.3 Apache 2.3.3 CakePHP 1.3.15 mod_rewriteが動いてるのはチェック用のプログラムで確認しました。 controllerとViewファイルを作り、文字の表示は成功しています。 フォームの実験を行った時にフォーム送信後のURL表示がうまくいっていません。(get/post共に) [書籍を参考にしたプログラム] Sampleコントローラーを作り、Viewの中にSampleディレクトリを作りその中にindex.ctpファイルを設置。フォームにテキストを入力して送信ボタンを押すと、テキストが表示されるプログラムです。 [コントローラー]sample_controller.php class HelloController extends AppController { public $name = 'Hello'; public $uses = null; public $layout = "hello"; function index(){} function sendForm(){ ~フォームで送られたテキストを表示(プログラムは省略)~ } } [index.ctp]のフォームのHTML <form method="post" action="./sendForm"> ~省略~ <input type="submit" /> </form> http://www.example.com/sampleでフォームを開きテキストを入力して送信ボタンを押すと http://www/example.com/sample/sendForm というURLになるはずなのですが、 http://www.example.com/sendForm となってしまいます。 試しにブラウザから「http://www/example.com/sample/sendForm」というURLを入力してみますと、フォームで入力したデータは表示されませんが、ページ自体は表示されます。 もう一つ、index.ctpの<form method="post" action="./sendForm">のアクションのパスを /sample/sendForm に変更してみますとデータも表示され、求めた結果になります。 以前、別の環境でこのプログラムを動かしたときは、<form method="post" action="./sendForm">のままでうまくいったので、.htaccessのファイルの設定に問題があると予想されます。 下記にcakePHPの設定情報を記載しますので、間違っている部分を指摘していただければと思います。 ※ディレクトリの構成は下記のページの「3.4.3. 高度なセットアップ:その他のインストール方法」を参考にしています。 http://cakephp.jp/old_doc/ch03s04.html [アプリケーションディレクトリ] /home ____/me ________/mysite ____________/config ____________/controllers ____________/models ____________/plugins ____________/tmp ____________/vendors ____________/views ____________index.php ____________.htaccess→「htaccessファイル1」● [公開ディレクトリ] /var ____/www ________/html ____________/example.com→ドキュメントルート _______________/css _______________/files _______________/img _______________/js _______________.htaccess→「htaccessファイル2」● _______________css.php _______________favicon.ico _______________index.php [コアファイルディレクトリ] /usr ____/lib ________/cake ____________/cake ________________/config ________________/docs ________________/libs ________________/scripts ________________app_controller.php ________________app_model.php ________________basics.php ________________bootstrap.php ________________dispatcher.php ____________/vendors ____________/plugins ____________index.php ____________.htaccess→「htaccessファイル3」● 「htaccessファイル1」(アプリケーション) -------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine on   RewriteBase /cake/app→■追加  RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule> ------------------------------------------------- 「htaccessファイル2」(公開) -------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On   RewriteBase / →■追加  RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> -------------------------------------------------- 「htaccessファイル3」(コア) -------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine on   RewriteBase /cake→■追加 RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> -------------------------------------------------- 疑問点は下記のようになっています。 (1)追加した部分のRewriteBaseはこれで良いのか? (2)RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] の部分はこのままで良いのか?webroot部分の変更は必要か? (3)RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]の部分はこのままで良いのか?

    • ベストアンサー
    • PHP
  • CakePHPのコントローラの作成

    PHP初心者です。 CakePHPをインストールし試しにTestControlerを作成したのですが、ページが開きません。 PageNotFoundになります。 考えられる原因が分かれば教えて下さい。 【やったこと】 ・ [CakePHP root]\app\Controller に TestController.php を作成。 <?php App::uses('AppController', 'Controller'); class TestController extends AppController { } ・ URLにアクセス http://[CakePHP root]/Test ⇒ Not Found http://[CakePHP root]/test ⇒ Not Found http://[CakePHP root]/app/webroot/index.php?url=test ⇒ CakePHPのindex.phpが表示される。 http://[CakePHP root]/app/webroot/index.php?url=Test ⇒CakePHPのindex.phpが表示される。 以下のサイトを参考にしました。mod_rewriteが動いていない可能性がある ということなので、URL直接指定もしてみましたがダメでした。 http://codezine.jp/article/detail/768?p=2 よろしくお願いします。

    • ベストアンサー
    • PHP
  • CakePHPの表示エラーについて

    --------------------------- CakePHPバージョン:1.3.14. PHPバージョン:5.3.3 Apacheバージョン:2.2.3 --------------------------- CakePHPを始めたばかりです。 インストールを完了し、トップページでのhello world!の表示は出来ました。 (トップページだけは特例のようですね) http://www.example.com/test/hello という形でhello world!を表示させたいと思い下記のようにファイルを作りUPしましたが、エラーが表示されてしまいました。 何を変更すればうまくファイルが表示されるのかを教えていただければと思います。 test_controller.php ---------------------------------------------------------- class TestController extends AppController { public $name = "Test"; public $uses = null; public $autoRender = true; function index(){ } function hello(){ $this->set("content", "Hello World!"); } } ---------------------------------------------------------- http://www.example.com/test/hello (エラーメッセージ) ------------------------------------------------------------------------------- Warning: include(cake/bootstrap.php): failed to open stream: No such file or directory in /var/www/html/example.com/test.php on line 76 Warning: include(): Failed opening 'cake/bootstrap.php' for inclusion (include_path='/var/www:/var/www/html/:.:/php/includes:/usr/share/pear') in /var/www/html/example.com/test.php on line 76 Fatal error: CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your /cake core directory and your /vendors root directory. in /var/www/html/example.com/test.php on line 77 ------------------------------------------------------------------------------- bootstrap.phpというファイル名が出てきているので、bootstrap.phpを見てみましたが何が間違っているのかはわかりません。 include_pathも出てきているので、cakephpのパスを通しておく必要があるのでしょうか? bootstrap.php ------------------------------------------------------------- if (!defined('PHP5')) { define('PHP5', (PHP_VERSION >= 5)); } if (!defined('E_DEPRECATED')) { define('E_DEPRECATED', 8192); } error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); require CORE_PATH . 'cake' . DS . 'basics.php'; $TIME_START = getMicrotime(); require CORE_PATH . 'cake' . DS . 'config' . DS . 'paths.php'; require LIBS . 'object.php'; require LIBS . 'inflector.php'; require LIBS . 'configure.php'; require LIBS . 'set.php'; require LIBS . 'cache.php'; Configure::getInstance(); require CAKE . 'dispatcher.php'; ------------------------------------------------------------- (全体の設定状況など) .htaccess httpd.conf あたりの設定が間違っているのかと思い、ネットで情報を調べていろいろ変更したりしてみましたがダメでした。 あと一つ気になる点としては、公開ディレクトリ以外をUPしているディレクトリ名をcakeにしてしまっているところです。(cakeというディレクトリ名はダメとかあるのでしょうか?) ディレクトリの構成と設定の内容を下記に記載します。 [/var/cake]プログラムファイル /var/cake/app /var/cake/plugins /var/cake/vendors /var/cake/.htaccess /var/cake/index.php 公開ディレクトリ(ルート) css files img js .htaccess css.php index.php ############################################################## .htaccessの設定 ############################################################## 3か所ほど設定すべきところがあるようなので下記のように設定しました。 /var/cake/.htaccess ------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /cake RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> ------------------------------------------------- /var/cake/app ------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /cake/app  RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule> ------------------------------------------------- 公開ディレクトリの.htaccessの設定 ------------------------------------------------- <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /  RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\.(cgi|css|gif|jp?g|png)$ RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> -------------------------------------------------

    • ベストアンサー
    • PHP
  • IISでcakePHP

    現在IIS上でcakePHPを利用してPHPのwebアプリを作成しています。 事情によりrewriteは行わずに作成しているのですが、 URLを指定すると404エラーが返ってきます。 URLは以下です。 http://localhost/test/index.php/posts/index cakePHPはinetpub/wwwroot/test/直下に配置しています。 http://localhost/test/index.php の画面は見れています。 IISでrewriteをせずcakePHPの画面が見れる方法をご存知の方がいましたらご教授願います。 ●環境 windows XP Professional sp3 IIS 5.1 PHP 5.3.5 CakePHP 2.2.2

    • ベストアンサー
    • PHP
  • アパッチHTTPサーバーでindex.htmlなしフォルダを禁止する方法。

    アパッチHTTPサーバーでindex.htmlなしフォルダを直でurl入力しても自動的なファイル一覧表示をさせない設定がしたいです。 フォルダのパーミッションででななく、httpd.conf内で設定できればいいのですが。 あと、仮にそこまで行ったとして、フォルダを直でurl入力された時にエラーは何番になりますか? どなたか御教授下さい。

  • さくらインターネットにCakePHPをインストール

    さくらインターネットにCakePHPをインストールしようとしたのですが、どうやっても画面が開かず、ネットでもさんざん調べたのですが解決できなかったので質問いたします。 まずは開発中のサイトを公開しようとサーバーにアップロードしたのですが、400 Forbiddenや403 Bad Request画面がが出てしまい先に進めませんでした。app/webrootのindexに直接アクセスすると画面は真っ白な状態になります。 そこで、アクティブで使っていないドメインがあったのでそちらに何も手を加えていないまっさらなCakePHPをインストールしてみました。ダウンロードして解凍しただけのものですので、CakePHPのマニュアルで言えば「3.3.1 開発(Development)」と同じ状況だと思います。 ここで同じように、 http://www.example.com/cake_1_3/ にアクセスすると、400 Bad Requestが出てしまいました。 また http://www.example.com/ にアクセスすると、403 Forbiddenが出てしまいます。 さらに http://www.example.com/cake_1_3/app/webroot/index にアクセスしてみたところ、今度は真っ白な画面ではなく500 Internal Server Errorが出てしまいました。 .htaccessを見直してみたのですが、ほかの人と見比べてもとくに違いはありませんし、何が間違っているのかもはや見当もつきません。もし、何か手がかりになる情報をご存じの方がいらしたらご教示いただけますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • awsのec2にてcakephpインストール・設定

    amazon web serviceのec2でインスタンスを生成し、cakephpをインストールして使えるようにしたいと思っております。 すでに、apacheやphp、mySQLはインストール済みで、cakePHPをローカルのPCにダウンロードして、winSCPにてec2にアクセスしています。 ドキュメントルート以下にlibを置きたくなく、色々と調べまして現在は /home/○○○/app lib plugins などを置いていまして、confにてドキュメントルートを /home/○○○/app/webroot と設定してあります。 これで、ブラウザから http://○○○.jp/ でアクセスしたところ、 Warning: strtotime(): It is not safe・・・ というエラーが発生しました。 そこで、php.iniの date.timezone = を date.timezone = ‘Asia/Tokyo’ と変えてみてapacheを再起動しましたが、同じエラーが表示されてしまっています。 cakePHPのファイルを置く場所がいけないのでしょうか? それとも、設定で何か不備があるのでしょうか?? お分かりになられる方、いらっしゃいましたらご教授のほどお願い致します。

  • centOSにcakePHPを入れた際のエラー

    現在、amazon web serviceにてec2(centOS)を立ち上げ、 cakePHP(バージョン2.3)を配置しました。 配置した場所は /var/www/html/cakePHP で、ブラウザからcakeの画面が表示されるのは確認しております。 サーバ上に置いた際に発生するいくつかのエラーを直してエラーを消したのですが、 先ほどまた新たにエラーが発生してしまいました。 そのエラーの内容ですが、ページ上部に session_start() [http://php.net/function.session-start]: open(/var/lib/php/session/sess_u0btov6g5v9ob0lc0n9rpuaea6, O_RDWR) failed: Permission denied (13) [CORE/cake/libs/cake_session.php, line 587] というかんじで表示されています。 内容はなんとなく理解できて、 /var/lib/php/session/sess_u0btov6g5v9ob0lc0n9rpuaea6, O_RDWR のパーミッションを変更すれば直るかと思うのですが、 本当にこの直し方で大丈夫でしょうか。 この方法で直しても、いつかまた同じエラーが発生しそうで不安なので ご質問させていただきました。 お分かりになられる方、いらっしゃいましたらご教授のほどお願いいたします。

    • ベストアンサー
    • PHP
  • CentOS + apache で403エラー

    CentOS + apache で403エラー CentOS5.4とapache2.2でwebサーバを構成中ですが、 全てのページで403エラーが返ってきます。 いろいろ試してみましたが、 ルートディレクトリの/var/www/htmlを作成し直した際に、 何故か一度だけ動きました。理由は不明です。 その後OSを再起動した後は また見られない状態にもどっています。 どなたか分かる方、アドバイスをお願いします。 以下の事は試してみました。 ==================================================== 1. apache,osの再起動。 2. iptables停止 3. ブラウザ表示 > You don't have permission to access / on this server. /etc/httpd/logs/error_log 表示 > Permission denied: /var/www/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable だったので、ルートディレクトリ以下全てのパーミッションを777に、 それまではディレクトリ755、ファイル644 4. /var/www/htmlから、.htaccessを削除、テスト用index.htmlを作成 ブラウザ表示 > You don't have permission to access / on this server. > Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. error_log > Permission denied: access to /error/noindex.html denied /var/www/error/noindex.htmlのパーミッションは755です。 ======================================================= 以上です。宜しくお願いします。