• 解決済 sukikazunari

    (@sukikazunari)


    tubepressというプラグインが4.18にバージョンアップされてzip形式でインストールしたのですが不具合が発生してしまいます。さくらインターネットやロリポップでは発生しないのですがwpXだと発生してしまいます。サポートセンターに問い合わせたところwpxサーバーではPHPの設定において「open_basedir」が有効なためエラーが発生している、open_base_dirを個別に無効にするような個別の対応もできないといわれ自分で調べたのですがいまいちわかりませんでした。
    とりあえず
    if (!is_dir($baseDir)) {
    @mkdir($baseDir, 0770, true);
    }
    if (!is_writable($baseDir)) {
    if (!$this->_isWordPress()) {
    return null;
    }
    return $baseDir;
    }
    の部分を取り除いたら今のところ正常に作動はしているのですが勝手に文法をいじってこのまま使っていいのか不安が残ります。別のパスの指定をして使用するなど何か解決策がありましたらご教授お願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • wpXを使っていないのでお役に立てるかどうかわかりませんが、とりあえず。TubePress 3.18 の間違いでしょうか。示されたコードはプラグインのどのファイルにありますか(見つけられなかったので)。

    トピック投稿者 sukikazunari

    (@sukikazunari)

    いえ、3.18では不具合は起こりませんでした。tubepressの公式サイトで配布されている最新版の4.18で不具合が起こってしまいます。

    失礼しました。4.1.8 をダウンロードして試すと再現したので、TubePress 4.1.8 のコードを読んでみました。

    TubePress が「書き込み可能な一時ディレクトリ」を必要とするので、そのディレクトリを PHP の関数 sys_get_temp_dir で取得しています。これは open_basedir が無効なら問題ない方法です。

    しかし sukikazunari さんのサーバーは open_basedir が有効なので、PHP から書き込めるディレクトリが限定されています。そのため sys_get_temp_dir が示すディレクトリは書き込めず、不具合(エラー)が発生するのでしょう。

    そこで対処方法として考えられるのは、sys_get_temp_dir の呼び出しを、WordPress が用意している関数 get_temp_dir で置き換える方法です。get_temp_dir は sys_get_temp_dir が書き込み可能かチェックして、駄目なら他の書き込めるディレクトリを探してくれます(例えば /wordpress/wp-content/uploads など)。

    具体的には TubePress 4.1.8 のコードの中に sys_get_temp_dir が何箇所か出てくるのでそれを全部 get_temp_dir に書き換えれば良さそうですが、実際には試していませんし、別の問題を生むかもしれません。実施するかどうかはご自身の判断でお願いします。私なら公式ディレクトリから配布されるまでは使わないでおきますが。

    トピック投稿者 sukikazunari

    (@sukikazunari)

    詳しい説明ありがとうございました。私も公式版が配布されるまで様子見しようと思います。ありがとうございました。

    open_basedir で困っている人が他にもいますね。tubepress.comのサポートフォーラムへ投稿すると解決が早くなるかも。右上の検索ボックスに open_basedir を入れて検索してみてください。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「tubepress」には新たに返信することはできません。