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

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

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

提供: WordPress Codex 日本語版
2009年5月9日 (土) 02:15時点におけるBono (トーク | 投稿記録)による版 (テーマ自動アップグレード: XREA・CORESERVER.JP にて CGIモードで動かす場合(まとめ): 新セクション追加)

移動先: 案内検索

全体的に情報募集中です。ラフドラフトで、まだ内容の検証が済んでいません。情報が間違っていたり書き直されることがあります。このページ

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

セーフモードとは:

キャッシュ

ファイルアップロード

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

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

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

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

  • wp-content/uploads
  • wp-content/uploads/2007/07
  • wp-content/uploads/2007/08 (使う分が出来ていれば OK)

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

  • wp-content/uploads/

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

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

一般的なサーバの場合

(情報募集中)

XREA、CORESERVER.JP の場合

XREACORESERVER.JP の場合、次の内容を書いた .htaccess ファイルを wp-admin/ ディレクトリに置きます。(セーフモードの影響を受ける全機能を CGIモードで動かすには、まとめを参照

<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>

(注)

  • #!/usr/local/bin/php の追加やパーミッションの変更は不要です。
  • WordPress 2.5 以降の設定方法です。WordPress のバージョンによって、指定するスクリプト名が異なります。

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

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

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

(参考)

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

(情報募集中)

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

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

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

(情報募集中)

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

XREACORESERVER.JP の場合、ファイルアップロード機能と同様に、次の内容を書いた .htaccess ファイルを wp-admin/ ディレクトリに置きます。(セーフモードの影響を受ける全機能を CGIモードで動かすには、まとめを参照

<Files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

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

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

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

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

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

XREACORESERVER.JP の場合、次の内容を書いた .htaccess ファイルを wp-admin/ ディレクトリに置きます。(セーフモードの影響を受ける全機能を CGIモードで動かすには、まとめを参照

<Files update.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

コアアップグレード

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 の接続情報を入力する。
      • ホスト名: localhost または FTP 接続時のホスト名
      • ユーザー名、パスワード: FTP と同じ
      • 接続形式: FTPS 対応サーバでは「FTPS (SSL) 」を選択。XREA は「FTP」
    3. [開始] ボタンをクリック
      → 自動アップグレード処理が実行されます。
  4. アップグレードが成功したら、上記 1 で作成した tmp ディレクトリを削除。

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

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

XREACORESERVER.JP の場合、次の内容を書いた .htaccess ファイルを wp-admin/ ディレクトリに置きます。(セーフモードの影響を受ける全機能を CGIモードで動かすには、まとめを参照

<Files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

影響のあるプラグイン

  • 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.

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

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

<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 でいいのかな。。

(参考)

旧バージョンの場合:

関連ページ

外部資料