• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

セーフモードによる制限と対処方法

提供: WordPress Codex 日本語版
移動先: 案内検索

PHP がセーフモードで動作するサーバの場合、WordPress の一部の機能に制限が生じます。このページでは、セーフモードにより問題が生じる機能とその対処方法をまとめています。

セーフモードとは:

情報募集中 次の情報を求めています。 協力できることがあれば、該当部分を編集するか、このページのノートまたはフォーラム等で教えてください。

  • 措置をしていない場合のエラーメッセージまたはスクリーンショット
  • XREA・CORESERVER.JP 以外のサーバで PHP を CGI モードで動かす方法
  • 旧バージョンの対処方法も残した方がよい?
  • キャッシュ -- WPJ のセーフモードの対処法についてのドキュメント(ME 2.0.x 当時)に「キャッシュ機能の利用」という項目があったのですが、内容を覚えている人いませんか?/最新版では使われていない機能なのかな。。
  • 影響のあるプラグイン
  • 他にも影響のある機能があれば


キャッシュ

ファイルアップロード

投稿画面に、ローカルコンピュータ上の画像をサーバへアップロード(サムネイルも作成)する機能があります。通常、アップロードディレクトリは WordPress により自動作成されますが、セーフモードの場合、ディレクトリを自動作成できないため、アップロードができません。

方法 1: 事前にアップロードディレクトリを作成しておく

事前にアップロードディレクトリを作成し、パーミッションの書き込み権限を与えておきます。作成するディレクトリ名は 管理画面 > 設定 > その他の設定 の設定値によって異なります。

年月ディレクトリに整理する設定の場合:

  • wp-content/uploads
  • wp-content/uploads/2010/01
  • wp-content/uploads/2010/02
  • ...
    (使う分が出来ていれば OK)

年月ディレクトリを使わない場合:

  • wp-content/uploads/

方法 2: PHP を CGI モードで動かす

アップロード処理を行なうスクリプトを CGI モードで動かします。

プラグイン自動アップグレード

WordPress 2.5 より、プラグインの最新バージョンを 1クリックでダウンロード・アップグレードできる機能が搭載されました(公式プラグインリポジトリに登録され、当機能に対応しているプラグインのみ)。通常は、新バージョンをダウンロード・展開するディレクトリを WordPress が作成するため、セーフモードでは正常に動作しません。

方法 1: 事前に作業ディレクトリを作成しておく

(参考)

方法 2: PHP を CGI モードで動かす

アップグレード処理を行なうスクリプトを CGI モードで動かします。

プラグイン新規インストール

WordPress 2.7 より、管理画面からプラグインを検索・新規インストールできる機能が搭載されました(参考)。

方法 1: 事前に作業ディレクトリを作成しておく

(情報募集中)

方法 2: PHP を CGI モードで動かす

インストール処理を行なうスクリプトを CGI モードで動かします。

テーマ自動アップグレード

WordPress x.x より、管理画面からテーマを最新版にアップグレードできる機能が搭載されました。

通常は、新バージョンをダウンロード・展開するディレクトリを WordPress が自動作成しますが、セーフモードだと次のようなエラーが出ます。

Warning: touch() [function.touch]: SAFE MODE Restriction in effect. The script whose uid is xxxxx is not allowed to access /tmp owned by uid 0 in /{アカウントのディレクトリ}/public_html/wp/wp-admin/includes/file.php on line 174

Warning: fileowner() [function.fileowner]: SAFE MODE Restriction in effect. The script whose uid is xxxxx is not allowed to access /tmp owned by uid 0 in /{アカウントのディレクトリ}/public_html/wp/wp-admin/includes/file.php on line 628

Warning: fileowner() [function.fileowner]: stat failed for /tmp/xxxxxxxxxx in /{アカウントのディレクトリ}/public_html/wp/wp-admin/includes/file.php on line 628

Warning: unlink() [function.unlink]: SAFE MODE Restriction in effect. The script whose uid is xxxxx is not allowed to access /tmp owned by uid 0 in /{アカウントのディレクトリ}/public_html/wp/wp-admin/includes/file.php on line 630

方法: PHP を CGI モードで動かす

アップグレード処理を行なうスクリプトを CGI モードで動かします。

コアアップグレード

WordPress 2.7 より、WordPress 本体を 1クリックで新バージョンにアップグレードできる機能が搭載されました(参考)。通常は、新バージョンをダウンロード・展開するディレクトリを WordPress が自動作成します。

セーフモードの場合、管理画面 > ツール > アップグレード画面で [自動アップグレードを実行] ボタンをクリックしたときに次のメッセージが表示され、そのままでは実行できません。
public_html/wp/ ディレクトリに WordPress をインストールしている場合の例:

Warning: touch() [function.touch]: SAFE MODE Restriction in effect. The script whose uid is xxxxx is not allowed to access /tmp owned by uid 0 in /{アカウントのディレクトリ}/public_html/wp/wp-admin/includes/file.php on line 174

Warning: fileowner() [function.fileowner]: SAFE MODE Restriction in effect. The script whose uid is xxxxx is not allowed to access /tmp owned by uid 0 in /{アカウントのディレクトリ}/public_html/wp/wp-admin/includes/file.php on line 628

Warning: fileowner() [function.fileowner]: stat failed for /tmp/xxxxxxxxxx in /{アカウントのディレクトリ}/public_html/wp/wp-admin/includes/file.php on line 628

Warning: unlink() [function.unlink]: SAFE MODE Restriction in effect. The script whose uid is xxxxx is not allowed to access /tmp owned by uid 0 in /{アカウントのディレクトリ}/public_html/wp/wp-admin/includes/file.php on line 630

xxxxx は数字)

方法 1: 事前に作業ディレクトリを作成しておく

あらかじめアップグレードスクリプトが使用する作業ディレクトリ tmp を作成し、書き込み可能なパーミッションを設定しておく方法です。

  1. 自分のアカウントのトップディレクトリの直下に tmp ディレクトリを作成し、パーミッションを 707 に設定。
    • XREA の場合、/virtual/{アカウント名}/tmp/
  2. サーバより wp-config.php をダウンロードし、テキストエディタで開く。
    1. // 編集が必要なのはここまでです ! より前に次の1行を挿入。
      define ('WP_TEMP_DIR', '/{アカウントのディレクトリ}/tmp/');
    2. UTF-8 BOM なしで保存し、サーバへアップロード。
  3. 管理画面 > ツール > アップグレード画面を開く。
    1. [自動アップグレードを実行] ボタンをクリック。
    2. 「接続情報」画面が表示されたら、FTP 接続時の情報を入力して [開始] ボタンをクリック。(詳細はリンク先参照)
    3. 自動アップグレード処理が続行されます。
  4. アップグレードが成功したら、上記 1 で作成した tmp ディレクトリを削除。

(参考) Binsan’s Cafe » wordpress2.6.1に(問題発生)

方法 2: PHP を CGI モードで動かす

アップグレード処理を行なうスクリプトを CGI モードで動かします。

XREA・CORESERVER.JP にて CGIモードで動かす場合(まとめ)

XREACORESERVER.JP にて、PHP を CGIモードで動かすことにより対処したい場合、次の内容を書いた .htaccess ファイルを wp-admin/ ディレクトリに置きます。

WordPress 2.9.x の場合:

# 画像・ファイルアップロード
<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>
# プラグイン・テーマ 新規インストール/アップグレード
<Files update.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
# 本体アップグレード
<Files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
# カスタムヘッダー・カスタム背景 アップロード
<files themes.php>
AddHandler application/x-httpd-phpcgi .php
</files>

# の行はコメントです。削除して構いません。そのまま記述する場合は UTF-8 BOM なしで保存してください。

注意

旧バージョンの場合

WordPress 2.7.x:

# 画像・ファイルアップロード
<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>
# プラグイン新規インストール
<Files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
# テーマアップグレード
<Files update.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
# 本体アップグレード
<Files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
# プラグインアップグレードも update.php?

それ以前のバージョン:

プラグイン

セーフモードの影響を受けるプラグインについての情報です。他にもあれば書き込んでください。

  • WP-Cache -- キャッシュディレクトリを手動作成し、パーミッション設定しておくことにより対処可能。
  • WP Super Cache -- "The plugin does not work very well when PHP's safe mode is active. This must be disabled by your administrator."(FAQ - Troubleshooting 10.

関連ページ

変更履歴