@satico (乃木 さちこ)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

お名前com のサーバー(レンタルサーバーRSプラン)で、拡張子htmlのままphpを動かしたい。

解決したいこと

お名前com のサーバー(レンタルサーバーRSプラン)で、拡張子htmlのままphpを動かしたい。

さくらインターネットから、お名前.comのサーバーにホームページを移したいのですが、.htaccessで、htmlのままphpが動くようにしていたので、下記のページを見て、.htaccess と php-cgi を設置しましたが、表示されません…。。。文字コードや改行コードを変えてもダメです。

発生している問題・エラー

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

ログを見てみましたが、よくわからず…。

[Sun Apr 18 16:43:47.898276 2021] [cgi:error] [pid 357351] [client 180.34.70.77:0] AH01215: suexec policy violation: see suexec log for more details: /home/r1939859/public_html/sana-kashiwa.com/php.cgi
[Sun Apr 18 16:43:47.898395 2021] [cgi:error] [pid 357351] [client 180.34.70.77:0] End of script output before headers: php.cgi

諦めて拡張子をphpにしてもいいのですが、アンカーリンクが残らないようにするための以下のjsが効かなくなってしまいます。(ホームページのURL/index.php#access(←ページ内リンク)になる。)

該当するソースコード

document.addEventListener('touchstart', function() {}, {passive: true});
$(function(){
  $('a[href^=#]').click(function() {
    var position = 0;
    var href= $(this).attr("href");
    if(href.indexOf('#') >= 0 && $(href).size() && href != '' && href != '#'){
      var target = $(href);
      try{
        position = target.offset().top;
      }catch(e){
      }
    }
    var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
    var speed = Math.ceil(Math.pow(Math.abs((position - scrollY)), 0.7));
    if(speed){
      $('body, html').animate({scrollTop:position}, speed, 'swing');
    }
    history.replaceState(null, '', location.pathname)
    return false;
  });
});

htmlのままphpが使えるようにするか、phpで、URLにアンカーリンクが残らないようにするか、どちらかが解決できればいいのですが、どうしたら解決できるでしょうか?

0 likes

1Answer

エラーメッセージ suexec policy violation は、Apache サーバの suexec ポリシー違反を起こしているという意味です。

以下のサイトにあるように 20 個のポリシーを守らないといけないのですが、ほとんどはレンタルサーバー側でガードがかかっており、ユーザーが気にしないといけないの4つぐらいだと思います。

14 ディレクトリを他のユーザが書き込めるようになって いないか?

15 対象となる CGI/SSI プログラムは存在するか?

16 対象となる CGI/SSI プログラムファイルが他アカウントから 書き込めるようになっていないか?

20 対象となる CGI/SSI プログラムを exec して実行できるか?

以下の点を確認してみてください。

  • php.cgi を置いてあるディレクトリーが正しい場所か(実行しようとしているパスと違うところに置いていないか)
  • php.cgi を置いてあるディレクトリーの権限が 755 (rwxr-xr-x)になっているか
  • php.cgi のファイルの権限が 755 (rwxr-xr-x)になっているか
  • php.cgi のファイルが実行可能か
    • ファイルの先頭に見えない BOM コードが付いていないか(文字コードを UTF-8 にしている場合に起きる)
    • 改行コードが LF (0x0a)になっているか
    • php.cgi 自体が正しいか(参考サイトの内容のままなら /usr/local/bin/php-cgi が存在して実行かのうか)
1Like

Comments

  1. @satico

    Questioner

    回答ありがとうございます。
    教えて頂いた点を試してみましたが、難しいので、今回は諦めてphpに変更しようと思います。後々サーバーが変わった時に、またわからなくなりそうなので、その方がいいかもしれません…。。。
    教えて頂いたことを無駄にしないように、回答をよく読んで、時間のある時にいろいろ試してみます。

    ありがとうございました。

Your answer might help someone💌