現在、xampp for linuxを用いて立てたサーバにPiccy Cabinetのアルバムシステムの設置を行っています。


http://support.album-system.com/index.php?topic=install-guide

ですが、phpをマニュアル通りに設置する(と思っているだけかもしれませんが)と、Access Forbiddenと出てきてしまいます。更に直接PHPのファイルにでは以下のエラーメッセージが出てきてしまいます。
Premature end of script headers: album.php

設置作業のどこがまずいでしょうか。効率的に原因を突き止める方法をお教えいただけますでしょうか。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2009/09/01 07:01:29
  • 終了:2009/09/07 00:23:59

ベストアンサー

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/09/01 13:54:51

ポイント60pt

【1】効率的に原因を突き止める方法


王道は無く、地道な話になりますが、エラーメッセージについて調べ、

適宜テスト用スクリプトを作ったりして、確認を進めるしかないです。


地道な努力を繰り返していけば、そのうちに経験則というものが成り立つようになり、

即応できるようにもなりますし、そもそも失敗しないようになってきます。


今件であれば"Premature end of script headers"をネット検索してみる事からになりますが、

検索してみるとヘッダがどうのこうのとか、パーミッションがどうのこうのというものが、

多数返ってきて、perlの場合なども多かったりするので、さらにphpで絞り込んでいきますと、

パーミッションの問題にたどり着くと思います。


そちらのLinux環境が分からないので、ここからは kn1967 の経験則によるものになるのですが、

現状は、「ディレクトリやファイルのパーミッションはそれぞれ指定通りにしているのだが、

それでも動かない」という事なのではないかと想像しています。


想像の発展となりますが apache の suEXEC が有効になっているのではないかという事が考えられ、

与えるべきアクセス権が下記とは違うものとなっている可能性が覗えそうです。

Piccy-Cabinetサポートサイト - インストールガイド

スクリプト配置フォルダー:”/var/www/html/album” アクセス権「777」

PHPファイルは、実行ユーザに実行権限を与えてください。 アクセス権「755」

album-key.phpは、実行ユーザに実行+書き込み権限を与えてください。 アクセス権「777」

ログ用フォルダー:”/var/www/html/album/log” アクセス権「666」

構成定義ファイル「config.xml」は、書き込み権限が必要です。アクセス権「666


【2】設置作業のどこがまずい


ここで話が戻って、地道なテストから入ります。

まずは最も単純なphpスクリプトを作成して、そのディレクトリに配置してみましょう。

<?php
    phpinfo();
?>

多分、同じく動かないと思いうのですが、次に

  ディレクトリのパーミッションを777→705

  スクリプトファイルのパーミッションを755→700

などに変えてみましょう。

(666は600)


現状では、以上です。

なお、技術的質問の際にはOS環境(特にLinuxの場合は必須)も大きく関係してきますので、

環境は書き忘れないようにしましょう。コメント欄を開けておくと、

不足分などを聞いてきてくれるものと思われますので、個人的には開けておくことをお勧めします。

id:ohkaamagi

ご回答いただきましてありがとうございます。

OSはUbuntu 9.04です。中古PCを安く買ってきてサーバに仕立て上げたこともあるため、スペックは低いです。

(Pen3のしかも、元々Meが入っていたモノを使用しております。それなりの年代物です。)

2009/09/01 20:46:00

その他の回答(1件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/09/01 13:54:51ここでベストアンサー

ポイント60pt

【1】効率的に原因を突き止める方法


王道は無く、地道な話になりますが、エラーメッセージについて調べ、

適宜テスト用スクリプトを作ったりして、確認を進めるしかないです。


地道な努力を繰り返していけば、そのうちに経験則というものが成り立つようになり、

即応できるようにもなりますし、そもそも失敗しないようになってきます。


今件であれば"Premature end of script headers"をネット検索してみる事からになりますが、

検索してみるとヘッダがどうのこうのとか、パーミッションがどうのこうのというものが、

多数返ってきて、perlの場合なども多かったりするので、さらにphpで絞り込んでいきますと、

パーミッションの問題にたどり着くと思います。


そちらのLinux環境が分からないので、ここからは kn1967 の経験則によるものになるのですが、

現状は、「ディレクトリやファイルのパーミッションはそれぞれ指定通りにしているのだが、

それでも動かない」という事なのではないかと想像しています。


想像の発展となりますが apache の suEXEC が有効になっているのではないかという事が考えられ、

与えるべきアクセス権が下記とは違うものとなっている可能性が覗えそうです。

Piccy-Cabinetサポートサイト - インストールガイド

スクリプト配置フォルダー:”/var/www/html/album” アクセス権「777」

PHPファイルは、実行ユーザに実行権限を与えてください。 アクセス権「755」

album-key.phpは、実行ユーザに実行+書き込み権限を与えてください。 アクセス権「777」

ログ用フォルダー:”/var/www/html/album/log” アクセス権「666」

構成定義ファイル「config.xml」は、書き込み権限が必要です。アクセス権「666


【2】設置作業のどこがまずい


ここで話が戻って、地道なテストから入ります。

まずは最も単純なphpスクリプトを作成して、そのディレクトリに配置してみましょう。

<?php
    phpinfo();
?>

多分、同じく動かないと思いうのですが、次に

  ディレクトリのパーミッションを777→705

  スクリプトファイルのパーミッションを755→700

などに変えてみましょう。

(666は600)


現状では、以上です。

なお、技術的質問の際にはOS環境(特にLinuxの場合は必須)も大きく関係してきますので、

環境は書き忘れないようにしましょう。コメント欄を開けておくと、

不足分などを聞いてきてくれるものと思われますので、個人的には開けておくことをお勧めします。

id:ohkaamagi

ご回答いただきましてありがとうございます。

OSはUbuntu 9.04です。中古PCを安く買ってきてサーバに仕立て上げたこともあるため、スペックは低いです。

(Pen3のしかも、元々Meが入っていたモノを使用しております。それなりの年代物です。)

2009/09/01 20:46:00
id:wate_wate No.2

ワテ回答回数45ベストアンサー獲得回数32009/09/03 01:31:59

ポイント40pt

「効率的に原因を突き止める方法」といえるかどうかわかりませんが

【Access Forbidden】はWebサーバーの設定で

Indexesオプションがない場合に、以下のようなURLでアクセスすると表示されます。

http://www.ddummy.com/alubm/

Apacheは最後がスラッシュで区切られたURLがリクエストされた場合に、

DirectoryIndexのファイルを表示するようにします。

それがもない場合、

Indexesオプションが有効の場合は、

ファイルの一覧を表示します。

ですので、【Access Forbidden】の件は、

初期アクセスするファイルに直接リンクをさせるまたは、

DirectoryIndexを変更して、スラッシュで区切られた場合の自動で表示するファイルの

ファイル名を指定する。

という方がいいと思われます。

【Premature end of script headers: album.php 】の件もサーバー側の起因が考えられますので、

サーバー自体の設定を調整されたほうがいいように思われます。

「Premature end of script headers」の件は、

参考になるかどうかわかりませんが

具体的に「効率的に原因を突き止める方法」となると、

私の場合はソースファイル内をgrepをかけて、

エラーを表示している箇所のプログラムを読み解くか、

エラーメッセージが、見つからない場合は、

エラーメッセージ自体を

"Premature end of script headers"

のようにダブルクォートでエラーメッセージ自体をくくって

Googleでフレーズ検索をかけています。

そこで見つかったURLが

以下のURLです。

http://sagittarius.dip.jp/toshi/premature.php

id:ohkaamagi

ご回答いただきましてありがとうございます。

このようなまとめサイトもあるのですね。

2009/09/06 20:53:11
  • id:ohkaamagi
    確認して設置を行うことで、何とかphpとしては動作させることができるようになりました。
    ただ、現時点では画像のアップロードができません。
  • id:kn1967
    Piccy Cabinet の仕様はまだあまりみていませんが、
    php側のデフォルト設定(ファイルアップロードは2MBまで)のほうに
    引っかかっている可能性がありそうなので、余裕をみて例えば10MBくらいまでに
    あげてみてはどうでしょう?

    【方法1】php.ini にて設定を行う(ユーザー単位が有効範囲)
      post_max_size 11M
      upload_max_filesize 10M(post_max_sizeと同じかそれ以下の値にする)
    【方法2】.htaccsee にて設定を行う(ディレクトリ単位)
      php_value post_max_size 10M
      php_value upload_max_filesize 10M
    【方法3】各スクリプトにて設定を行う(スクリプト単位)
      ini_set('post_max_size', 10 * 1024 * 1024);
      ini_set('upload_max_filesize', 10 * 1024 * 1024);
    http://jp2.php.net/manual/ja/ini.core.php

    どの方法が良いかは適宜判断する必要がありますし、
    2および3については1による許可が必要だったりもしますが、
    自サバという事なので、まずは1で試してみてからでよろしいかと思います。

    【補記】
    Pen3ということなので処理時間がかかってタイムアウトになる可能性や、
    メモリの割り当て不足なども考慮すると下記も入れておいたほうが良いかもしれません。
    memory_limit 12M(post_max_sizeと同じか、少し多め)
    max_execution_time 60 (デフォルトは30秒)
  • id:ohkaamagi
    遅ればせながらご回答いただきましてありがとうございます。
    1について試しましたが、以下のエラーが出てしまい、アップロード不可能でした。
    エラーメッセージが出ておりますので、新たな以下の質問にて掲載させていただいております。
    ご回答いただけますと幸いです。よろしくお願い致します。
    http://q.hatena.ne.jp/1257366938

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません