- 締切済み
ゼンド フレイムワークがどうやっても動きません
先日同じように質問したのですが、解決の糸口すらないまま記事が遠くに行ってしまったので、もう一度質問させてください: OS はライナクス カーネル 2.6.x、ウェブ サーバはアパッチ 2.2.x、PHP は 5.2.4、また、ゼンド フレイムワークは 1.0.2 です。 ゼンド フレイムワークを使用しない従来の PHP スクリプトはどれでもまったく問題なく動作します。 ほとんどの人がうまくできるという本家取説「サルでもわかる」設定: http://framework.zend.com/manual/ja/index.html とまったく同じように設定 (ただし、パスの記述などは自身の環境に適宜合わせています) して試したところ、500 Server Error になります。アパッチのディフォールト エラ ログにはこの文言以外の情報はありません。また、PHP の設置したエラ ログには何も追加されていません (PHP 単独のスクリプトで故意にエラを出すと記録されるので、ログは働いています)。 次に、ディレクトリ構成や設定がおそらく原因でうまくいっていない「サル未満の人たち」のための、ディレクトリ構成と設定を個々の環境に合わせない強制的な、これが最後だという設定: http://akrabat.com/wp-content/uploads/getting-started-with-the-zend-framework_145.pdf にしたがっても、同じエラとなります。 ゼンド フレイムワークの設定をはずして通常の PHP スクリプトに戻すと、やはり普通に動きます。 また、ゼンド フレイムワークのファイルを削除したあと、再ダウンロードして再セットアップしても同様でした。 「最終設定」でもうまくいかなかった例はおそらくないのか、これ以上の情報を見つけることはできませんでした。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
環境構築して確認しようかと思いましたが、どうやってPHPを動作させて いるかもわかりませんし、時間が取れそうにありませんでした。 全然自信ありませんが、別の視点から・・・。 ・パーミッション と PHP5.2.4ではこんな動作するそうです。 ・http://www.1x1.jp/blog/2007/08/php_524_error_http500.html エラーログもそうなっているのか不明ですが、実はソース上に全角スペースが入っていたりとか。
- _chihiro_
- ベストアンサー率63% (26/41)
httpd -l の結果として得られる結果を表示してみてください。 そこにmod_rewrite.cはありますか? もしPHPではなくapache側でエラーが出ているのであればapacheのerror_logに何らかの情報が出ていると思うのですが、、、。
お礼
・リライトにともなうサーバ エラ ・ゼンド フレイムワークの使用にともなうサーバ エラ 現在両方ともあるようで、解決の道は厳しいです。もっとも、リライトでエラとなっているので、これまでに観察したものはそれによるものだったようです。しかし、リダイレクトなしでゼンド フレイムワークを使用するとやはりサーバ エラになるので、山の向こうにまた山があるようです。
補足
httpd -l にともなう mod_rewrite.c 行は必須ではないようです: Installation of mod_rewrite I. As a "built-in" module Run the command below: # /path/to/your/httpd -l If you get a display output of line(s) including "mod_rewrite.c", the module has already been installed and loaded as an intrinsic one. II. Dynamic loading Run the same command as in I above. If ALL of the following conditions are fullfilled, the mod_rewrite module has already been installed and is to be loaded upon start of the http daemon, even though without a line of "mod_rewrite.c": 1. A "mod_so.c" line occurs upon run of the command above. 2. There can be found a "mod_rewrite.so" file in the directory /path/to/your/modules 3. Your httpd conf file has a line of "LoadModule rewrite_module /path/to/your/modules/mod_rewrite.so" and it is on (uncommented). 上記 II に該当するので、mod_rewrite は大丈夫だと思います。 再三になりますが、アパッチのディフォールト エラ ログには 500 Server Error 以上の情報は載っていません。また、PHP の動いている設置エラ ログには、このとき何も書き込まれません。
- tany180sx
- ベストアンサー率63% (239/379)
#3ですが、ZendFrameworkが問題ではなく つまりmod_rewriteがうまく動いていないということでいいですね? 前にも書きましたが、私の環境ではマニュアル通りの設定では 無限ループとなり500エラーが出てしまうので RewriteEngine on RewriteCond %{REQUEST_URI} !(index\.php) RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php [L] としています。(rewriteについては詳しくありません) これでindex.phpの記述がなくても500エラーになりますか? Aliasはありませんよね?
お礼
よくよく考えてみるとリダイレクトしているだけなのに、なぜエラになるのでしょう。 リダイレクトをやめて今、通常使っている PHP スクリプトをルート以下の任意の場所に置くと、やはりきちんと動きます。
補足
おそらく以前に書いていただいたと思いますが、もう一度やってみました (index.php について): 1. 本家チュートリアルにある記述 2. <?php ?> のみ 3. 空 RewriteEngine が on では、いずれも 500 サーバ エラで、変化ありません。
- _chihiro_
- ベストアンサー率63% (26/41)
【1】以下のコマンドで、apacheの組み込んでいるモジュールの結果を書いてください。 例)/usr/local/apache2/bin/httpd -l ※httpdへのパスで使ってください。 【2】libraryへのパスはZendディレクトリへのパスではなく、Zendディレクトリ内にあるlibraryディレクトリを指定してみてください。 ※Development/application/libary へのパス 例)include_path = ".:/path/to/Zend/framework/Development/application/library"
お礼
リダイレクトがなぜかエラ。 そこで、リダイレクトだけが原因なのか、つまりリダイレクトにともなうエラが解決されたらゼンド フレイムワークが動くようになるのか、確認してみました; リダイレクトをオフにして、フレイムワークを利用する最も簡単なひとつの記述を書き、そのファイルを直接呼び出しました。 果たして、500 サーバ エラとなりました。 リダイレクトを解決しても、まだ問題が待っているようです。
補足
> Zendディレクトリへのパスではなく、Zendディレクトリ内にあるlibraryディレクトリ これはどういう意味でしょうか。 現在の配布においては、書庫を展開した結果は、library/ の下に Zend/ があり、その直下にフレイムワークの各ファイルが配してあり、おっしゃるような構造にはなっていません (Zend/ は私が作ったものではなく、その下に library もありません)。もとより、Zend/ 以下をパスの通った場所に置くことになっています。
- _chihiro_
- ベストアンサー率63% (26/41)
>> apacheのmod_rewriteが動いていない場合 >動いています。 >別途動作させようとすると、コンソウルで以下のエラとなります: >mod_rewrite is already on and running: Cannot run it multiply. >別途動作させようとすると、 というのはどういう事でしょうか? コンソールにApacheのエラーログが出力されるのでしょうか? 【1】httpd.conf の mod_rewriteを使用している箇所が RewriteEngine On RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php のようになっているか? 【2】apacheのモジュールにrewrite_moduleが組み込まれているか? 【3】php.ini の include_path に ZendFrameWork の libraryディレクトリが指定されているか? 以上3点が陥りやすいミスです。 もしよろしければ上記の設定を載せてもらえないでしょうか? 以上
お礼
> include_path = ".:/usr/lib/php/library" ここに Zend ディレクトリ以下があります。 他のフォローアップにも書いたとおり、この数十日間に自身が考えられることは確認/試行しましたので、通常は思いもよらない原因などはないでしょうか。
補足
以下です (本家マニュアルにしたがった設定): > 【1】 RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php > 【2】 LoadModule rewrite_module modules/mod_rewrite.so > 【3】 include_path = ".:/usr/lib/php/library"
- tany180sx
- ベストアンサー率63% (239/379)
まずはindex.phpを<?php phpinfo(); にでもしてください。 rewriteをoffにしてindex.phpにアクセスできますか? ここでダメならアパッチの基本設定に問題があるのでしょう。 rewriteをonにすることでエラーになりますか? ならばrewriteの記述が間違っているのでしょう。 rewriteをonでも正常に動作しているなら、 index.phpに1行ずつコードを追加して動作を確認してください。
お礼
まだまだ解決には険しい道が続くようです。
補足
最初に書いたとおり、通常の PHP スクリプトは正常動作します。 > rewriteをonにすることでエラーになりますか? 500 サーバ エラになります。 > ならばrewriteの記述が間違っているのでしょう。 マニュアルのとおりに設定しています。 誤植や余分な空白などはありません (Perl スクリプトは 10 年、PHP は 3 年やっています)。
- _chihiro_
- ベストアンサー率63% (26/41)
解説サイトと同じ環境、同じ構成で動作しないなんて事がおかしいです。 必ずどこかで解説サイトと異なる点が存在し、何らかのエラーが発生しているはずです。そこが分からないと回答も難しいです。 mookun2007さんのおっしゃるように、.htaccessの設定やapacheの設定、PHPのphp.iniの設定などもう一度確認されるべきでしょう。 僕もZendFrameWorkに関してはほとんど知識がありませんが、apacheのmod_rewriteが動いていない場合や、php.iniのinclude_pathがおかしいなどというケアレスミスはないか、もう一度確認してみてください。
お礼
これまで動かないという人の書込みを多く探して見てきました。回答にあるのはそういった内容が多いのですが、どれも該当しませんでした。現在のゼンド フレイムワークは 1.0.2 なのですが、1.0.1 の出たころからずっとやっていますが、一度も動作しません。もう何十日でしょうか。各記述はわざわざ打ち出しもして穴の開くほど見直したので、記述の間違いはないです。
補足
> apacheのmod_rewriteが動いていない場合 動いています。 別途動作させようとすると、コンソウルで以下のエラとなります: mod_rewrite is already on and running: Cannot run it multiply. > php.iniのinclude_pathがおかしいなど もう何度も見直しましたが、ありえません。マニュアルのとディレクトリ階層や構成をまったく同じにしているので、ここは同じにしています (ましてや /path/2/my/zend/library などという文字列にはしていません)。
- mookun2007
- ベストアンサー率59% (28/47)
以前の質問も拝見しましたが、これだけの情報では答えようがありません。 ・ディレクトリ構成 ・.htaccessの内容 ・アクセスファイル(公開ディレクトリに置く「index.php」とか)の内容 ここら辺の情報を載せることはできないのですか? また、どのような状況でエラーがでるのか? Apacheのmod_rewriteは正しく動作しているのか? まずはどの部分でエラーが起きるのか、エラー原因の細分化をしてみましょう。
お礼
上下どちらの方法でも、文書ルート ディレクトリ内の index.php にリダイレクトさせることには変わりありませんので、test.php など、内容のない、ないしは適当な内容のテスト ファイルを作り、これをユーザ エージェントから読み込むとエラになります。しかしながら、テスト ファイル以前に index.php やそれ以前にアウトになっていると思われますが、いかがなものでしょう。 > どのような状況でエラーがでるのか?
補足
質問の上下の方法でディレクトリの配置や関連ファイルの内容は異なるのですが、それぞれにおいて、まったく説明のままの構成にし、まったく説明のままの内容をファイルに書き込んでいます。まったく同じであるため、リンク先の文書のコピーと貼り付けをこの場にしてしまうのはいかがなものかと思っているしだいです。
お礼
上もそうですが、これも先に書きましたが、アパッチの既定のエラ ログには 500 Server Error 以上の情報は残っていません。これでは、「Perl/CGI スクリプトで 500 エラが出たら、error_log を見よ」と人にアドバイスすることもできません。
補足
> 実はソース上に全角スペースが入っていたり ありえないです; Perl は 10 年、また PHP は 3 年やっています。