php

さくらのvpsを借りてあれこれ遊ぼうとhshsしている (っ´∀`)っ ゃーたんです、こんにちは!
メモリ2GB(仮想3コア)を借りてみたのですが、思ったよりサクサク動いてくれています。お申し込みはこちらから。

まだお試し期間なのをいいことに、ab砲ぶっ放したりして遊んでるのですが、
テスト用のphpファイル(単なるphpinfo)にアクセスすると、apacheのエラーログに何やら変なのが・・・。
環境は CentOS release 6.2 (Final) httpd-2.2.15 PHP 5.3.3 です。

[Sun Apr 22 15:47:03 2012] [error] [client xxx.xxx.xxx.xxx] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /home/vhosts/path/to/hoge/public_html/index.php on line 2

見てみたらタイムゾーンのエラー(warning)と言っています。
このままにしておくと、date系の関数を実行するたびにエラーが記録されてしまいます。

We selected 'Asia/Tokyo' for 'JST/9.0/no DST'

って言ってるので、きっとタイムゾーンの設定してないんだろうなーと思って /etc/php.ini を見てみたら案の定でした。
どうやらこういう理由のようです。

※ PHPのドキュメントより引用

全ての日付/時刻関数で使用されるデフォルトのタイムゾーン。 PHP 5.4.0 より前のバージョンでは、
これは環境変数 TZ の値が設定されていない場合にのみ機能していました。
明示的に指定しなかったときにどのタイムゾーンを利用するのかについての優先順位は 
date_default_timezone_get() のページで
解説されています。サポートしているタイムゾーンについては
 サポートされるタイムゾーンのリスト を参照ください。

 

※ エラー発生時の設定

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =

※ 変更後の設定

;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =
date.timezone = 'Asia/Tokyo'

たった1行 「date.timezone = 'Asia/Tokyo'」 を追加してあげて、
Apacheを再起動すればOKです。エラーログは余計なもの出力しちゃうと、実運用でクリティカルなエラーを見逃してしまう原因になるので、
極力余計なログを出さない設定にしたいものです。

でわ~♪

1件のコメント

こんばんは。2012/04/07に、普段怒られながら障害対応してるであろう僕らが休みの日にわざわざ障害対応しに集まるイベント「トラブル☆しゅーたーずに参加してきた (っ´∀`)っ ゃーです。

■ トラブル☆しゅーたーず とは

シナリオ
あなたはとあるwebインテグレーターにつとめる社員です。
立ち居値としては、リーダークラス?
ちょっといい気分になってきていました。

ある日、待望の新入社員の山〇君がやってきました。
しかも、あなたの部署です。
OJTが一通り行われたあと、幸運にもあなたの配下に配属されたではありませんか。

さっそく、いろいろ教えつつ「これで少しでも負荷がさがれば。。。」とほくそ笑むのでした。
さてある日、山〇君にお客様のクラウド上のシステムメンテナンスを指示します。
さほど難しい作業ではなかったので、彼にまかせて別の作業を実施します。
しばらくすると、お客様から入電が・・・・

どうもお客様のシステムが調子がおかしいとのこと
山〇君にどのような作業を実施したのか確認しても
「何もやっていない」
「ログはとっていない」
と繰り返すばかりです。

一抹の不安を覚えつつ、あなたはチームを従えてコンソールに向かうのでした

という前提で障害対応のロールプレイをしよう!というhbstudy、ncstudy、odstudy合同開催の勉強会でした。

…続きを読む

WordPressでラグインやテーマをインストールするときに、通常、FTPサーバへのログインを求められます。WordPressを動かしているサーバでFTPサーバが動いていて、FTPのポートをListenしていればよいのですが、そうもいかない環境だったらどうするのだろう?これも先人の知恵がありました。

ココを参考というかまるっと手順を踏襲させていただいたのでメモします。
1) FS_METHOD定数を設定する
wp-config.php に以下を追記する
define('FS_METHOD','direct');
2) WordPressインストールディレクトリ以下のオーナー、パーミッションを変更する
$ WPDIR=/path/to/public_html ← WordPressインストールディレクトリを環境変数に指定する(皆さんの環境に適宜読み替えてください)
$ cd ${WPDIR} ← WordPressインストールディレクトリへ移動する
$ sudo chgrp -R apache * ← すべてのファイル、ディレクトリのグループをapacheにする
$ sudo chmod -R g+rwX * ← すべてのファイル、ディレクトリのグループに読み書きの権限を付与する
$ sudo chmod 666 .htaccess
.htaccess以外のファイルはパーミッション664、ディレクトリのパーミッションが775になっていれば設定はOK。管理者ログイン後、テーマのインストールやプラグインのインストールを行う際に、FTPサーバの接続設定画面が出てこなければOKです。
しかし、パーミッションやオーナー、グループのチェックにFTPサーバのアカウントを使ってチェックするってどうなんだろう。。。(ぶつぶつ

Movable Typeでこんな記事書いてるけど気にしないでください(;´Д`)

人に頼まれてWordPressをインストールすることがたまにあって、あー楽ちん楽ちんとか思いながら手を動かすのですが、ちょっとだけハマったのがリバースプロキシ配下のWEBサーバにインストールするとき。
リバースプロキシから背後のWEBサーバへはプライベートIPアドレスで繋がっているのですが、WordPressインストール後に更新系の処理を行おうとすると、モロにプライベートIPアドレスへつなぎに行こうとして接続に失敗します。
ココを参考にというかそのまんまの手順で環境変数を設定したら、あっさり解決。wp-config.phpに
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];

と書くだけ。環境変数2つであっさり解決なんて楽ちん楽ちん。