万が一、当サイトで重大な問題を発見した際などは、フォーラムや WordSlack #docs チャンネルでお知らせください。</p>
セーフモードによる制限と対処方法
目次
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 モードで動かします。
- XREA、CORESERVER.JP の場合は、下記 XREA・CORESERVER.JP にて CGIモードで動かす場合(まとめ)を参照のこと。
- その他のサーバの対処方法は、まだ情報がありません。
プラグイン自動アップグレード
WordPress 2.5 より、プラグインの最新バージョンを 1クリックでダウンロード・アップグレードできる機能が搭載されました(公式プラグインリポジトリに登録され、当機能に対応しているプラグインのみ)。通常は、新バージョンをダウンロード・展開するディレクトリを WordPress が作成するため、セーフモードでは正常に動作しません。
方法 1: 事前に作業ディレクトリを作成しておく
(参考)
方法 2: PHP を CGI モードで動かす
アップグレード処理を行なうスクリプトを CGI モードで動かします。
- XREA、CORESERVER.JP の場合は、下記 XREA・CORESERVER.JP にて CGIモードで動かす場合(まとめ)を参照のこと。
- その他のサーバの対処方法は、まだ情報がありません。
プラグイン新規インストール
WordPress 2.7 より、管理画面からプラグインを検索・新規インストールできる機能が搭載されました(参考)。
方法 1: 事前に作業ディレクトリを作成しておく
(情報募集中)
方法 2: PHP を CGI モードで動かす
インストール処理を行なうスクリプトを CGI モードで動かします。
- XREA、CORESERVER.JP の場合は、下記 XREA・CORESERVER.JP にて 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 モードで動かします。
- XREA、CORESERVER.JP の場合は、下記 XREA・CORESERVER.JP にて 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
を作成し、書き込み可能なパーミッションを設定しておく方法です。
- 自分のアカウントのトップディレクトリの直下に
tmp
ディレクトリを作成し、パーミッションを 707 に設定。- XREA の場合、
/virtual/{アカウント名}/tmp/
- XREA の場合、
- サーバより
wp-config.php
をダウンロードし、テキストエディタで開く。-
// 編集が必要なのはここまでです !
より前に次の1行を挿入。define ('WP_TEMP_DIR', '/{アカウントのディレクトリ}/tmp/');
- UTF-8 BOM なしで保存し、サーバへアップロード。
-
- 管理画面 > ツール > アップグレード画面を開く。
- [自動アップグレードを実行] ボタンをクリック。
- 「接続情報」画面が表示されたら、FTP 接続時の情報を入力して [開始] ボタンをクリック。(詳細はリンク先参照)
- 自動アップグレード処理が続行されます。
- アップグレードが成功したら、上記 1 で作成した
tmp
ディレクトリを削除。
(参考) Binsan’s Cafe » wordpress2.6.1に(問題発生)
方法 2: PHP を CGI モードで動かす
アップグレード処理を行なうスクリプトを CGI モードで動かします。
- XREA、CORESERVER.JP の場合は、下記 XREA・CORESERVER.JP にて CGIモードで動かす場合(まとめ)を参照のこと。
- その他のサーバの対処方法は、まだ情報がありません。
XREA・CORESERVER.JP にて CGIモードで動かす場合(まとめ)
XREA・CORESERVER.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 なしで保存してください。
注意:
-
#!/usr/local/bin/php
の追加やパーミッションの変更は不要です。 - WordPress のバージョンによって、指定するスクリプト名が異なります。
- WordPress 設置ディレクトリの
.htaccess
にAddHandler application/x-httpd-phpcgi .php
と書かないこと。- 管理画面の表示が崩れる等の不具合が生じます。
- WordPress 全体が CGI モードで動きます。次項デメリット参照。
- 設定方法・メリット・デメリット: XREA&CORE SUPPORT BOARD » PHPをCGIとして動かす方法について
- CGI モードの場合の追加設定: XREA&CORE SUPPORT BOARD » PHPをCGIとして動かす方法(2)
旧バージョンの場合
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?
それ以前のバージョン:
- Chicken Heart Lab - WordPress » WordPress 2.5 でファイルアップロード (WordPress 2.5)(2008-03-19)
- Numb. - XREA で WordPress ファイルアップロード機能を利用する (2006-08-16、2008-01-07 改訂)
プラグイン
セーフモードの影響を受けるプラグインについての情報です。他にもあれば書き込んでください。
- 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.)
関連ページ
- レンタルサーバ情報
- Core Update Host Compatibility -- 本体の自動アップグレード機能対応サーバリスト
変更履歴
- (2.8 か 2.9) : プラグイン新規インストールに対する CGIモード(XREA・CORESERVER.JP)のファイル指定が
plugin-install.php
からupdate.php
に変わりました。実行ファイル変更のため。 - 2.8 : 新機能「テーマ新規インストール」も措置が必要です。
- 2.7 :
- 新機能コアアップグレードも措置が必要です。
- 新機能プラグイン新規インストールも措置が必要です。
- (2.6 か 2.7) : 新機能テーマ自動アップグレードも措置が必要です。
- 2.5 :
- ファイルアップロードに対する CGIモード(XREA・CORESERVER.JP)のファイル指定が
async-upload.php
に変わりました。実行ファイル変更のため。 - 新機能プラグイン自動アップグレードも措置が必要です。
- ファイルアップロードに対する CGIモード(XREA・CORESERVER.JP)のファイル指定が