We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 11852
    • 10 Posts
    モジュール動作関連ということで、このスレッドに書かせていただきました。

    レンタルサーバ(共有サーバ)のほとんどは、PHPのSafeModeがONであるため、
    一部のモジュールやsnnipetが正常に動作しません。

    実際確認した構成は、Xrea(s175,utf-8)、MODx0.92、MaxiGalleryで
    写真のアップロードがうまくできませんでした。(uidが違うためアップロードできず)
    MaxiGalleryでは、アップロードディレクトリはメニューインデックス?で作成されており
    ディレクトリの所有者がapache:apacheで作成されてしまうためSafeModeでエラーと
    なります。
    当然、ディレクトリの所有者を変更することでアップロードができるようになるのですが
    毎度変更するのは大変です。
    (XreaであればCGI版PHPを使用する手もありますが。。。)

    皆さんはどのように回避されておりますか?
    何かいい案がありましたらご教授いただけないでしょうか。
    • MaxiGallery興味あります。
      こういう方法はどうでしょうか。
        • 11852
        • 10 Posts
        返信ありがとうございます smiley
        MaxiGalleryはこちらhttp://modxcms.com/forums/index.php/topic,3843.0.htmlのSnnipetです。
        実はAddHandler cgi-script は、試してみました。
        このCGI版PHPではうまくいっております。

        やったことは、
        *.phpの一部の頭に#!/usr/loccal/bin/phpを追記
        .htaccessにAddHandler cgi-script .phpを追記
        です。

        かなりの数のphpファイルに追記してしまっているため、手間が大変です。
        特にCoreファイルの変更は、毎度追記が必要になってしまうので、
        できれば避けたいところです。

        一番の理想は、MaxiGallryだけCGI版PHPで動作させられないかです。
        他のCMSやWikiでは、そのように回避しているようですが、MODxでは
        いまいちやり方がわからなかったので、質問させていただきました。

        私の勘違いかもしれないので、念のため記述しておきます。
        ・suEXEc環境のCGI版PHP(SafeMode Off)
         Xreaの場合、CGIはsuEXEc動作であり、CGI版PHP(SafeMode Off)はユーザー権限で
         動作するため、ファイルアップロードが可能。

        ・モジュール版PHP(SafeMode On)
         モジュール版PHPはapacheプロセスユーザー(apache)で起動するため、SafeMode Onの
         環境だと、uidが違うユーザーディレクトリに書き込めないため、エラー表示になる。
          • 21523
          • 5 Posts
          xrea であれば、以下のような方法でCGIモードで動作させられますが、これではだめですか?


          動かしたいPHPがあるディレクトリ内に下記一行を「.htaccess」に追加、または、新しく設置してください。
          すべての「.php」ファイルがCGIとして実行されます。
          パーミッション:644などCGIとして必須のオーナー実行権限がなくても実行できますので、標準のモジュール版PHPの設定を引き継いで動作します。
          また、先頭行に「#!/usr/local/bin/php」を入れていただく必要はありません。

          AddHandler application/x-httpd-phpcgi .php

          通常のモジュール版に対するメリットデメリット等など詳細は、引用元を参照してください。
          http://sb.xrea.com/showthread.php?t=10744
            • 11852
            • 10 Posts
            情報ありがとうございます!
            #!/usr/local/bin/phpの記述は必要なかったのですね。

            公式サイトを探してみたところ以下の情報がありました。
            http://sb.xrea.com/showthread.php?t=10744

            結果、MODxインストールディレクトリルートにある、.htaccessに以下を追記するだけで
            XreaでMaxGallery他の機能が使えることを確認しました!
            AddHandler application/x-httpd-phpcgi .php
            希望通り、ディレクトリ、画像ファイルがユーザー権限で作成されました。
            SuEXEcを考慮しなくても(707などにしなくても)動作できるのはうれしいです。

            これで、#!/usr/local/bin/phpの記述しなければならない問題は解決したのですが
            結果、MODx全体がCGI版PHPで動いてしまうため、動作が遅くなってしまうデメリット
            はありますね :’(

            理想は、MaxiGalleryのアップロード部分だけをCGI版PHPで動かしたいところですが、
            MaxiGalery内のLoadImage関数がsnnipetに含まれてしまっているため、できません。
            まだ、PHPを書くことまではできないので編集はできませんが、これを機に勉強してみようかと
            思います。
            他のWikiやCMSでも個別PHPファイルのみCGI版PHPで動作させているケースは多い
            ようですね。
            MODxのsnnipetはDBに保存される?のか、index.phpから呼ばれている?のか、まだ
            よく分かっていないのですが、もうちょっと勉強してみます huh