2012/05/10

【サーバ】URLをWWWあり、なしに統一する

ということで本日やったメモ
僕が携わったサイトではないのですが、お客さんからURLのWWWを有りに変更して欲しいという
依頼があったらしくそれを投げられたので調べた時のメモ

今回は「mod_rewrite」を使用し、wwwなし(またはあり)のURLでアクセスがあった場合は
301リダイレクトを利用し、wwwあり(またはなし)にリダイレクトするという設定にしました。
設定は、「httpd.conf」または、「.htaccess」にて行います。

WWWあり統一
RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com RewriteRule ^(.*)$ http://www.example.com/$1 [R=301, L]
WWWなし統一
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.example\.com RewriteRule ^(.*)$ http://example.com/$1 [R=301, L]
終わり

2012/05/01

【PHP】Qdmailでメール送信した際に本文にヘッダーが表示される【Qdmail】

ということで今日あったQdmailの不具合?についてのメモ。

Qdmailでメール送信した際に、ヘッダーの一部またはすべてが
本文に表示されてしまうという不具合?に遭遇しました。


原因としては、ソースコード上の改行コードが違うために
起こってしまうそうです。

Qdmailではヘッダーの改行コードをRFCに準拠していますので「CrLf」なんだそうです。

ただ、qmailなどでメールを送信している場合に「CrLf」だと不具合が起きてしまうことが
あるそうです。

うちのサーバはPostfixでしたが、ダメだったみたいですね。
ですので、改行コードをソースコード上で「CrLf」から「Lf」に変更したところ、
ヘッダーが本文に表示されることは無くなりました。

Qdmailで使用する改行コードを変更するには
「lineFeed関数」を使用します。
$mail->lineFeed("\n");
終わり 参考URL:ヘッダーが見えてしまう等 - Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte

2012/04/24

【Linux】コマンドで.htpasswdを生成したりする

ということで、htpasswdのメモ。

普段「.htpasswd」ファイルは、ファイルを作成して
アップロードなり、シンクなりすると思います。

でも今日コマンドでちゃっちゃと作れると聞いたのでメモ

・「.htpasswd」の作成
%htpasswd -bc .htpasswd user01 password
これで、カレントディレクトリに「user01」というユーザで「password」という パスワードのユーザが作成されます。 ・ユーザの追加
%htpasswd -b .htpasswd user02 password
これで、カレントディレクトリにある「.htpasswd」に 「user02」というユーザで「password」というパスワードのユーザが追加されます。 「bオプション」は、ユーザのほかにパスワードを指定して追加します。 「cオプション」は新規にファイルを作成します。 終わり

2012/04/21

【MySQL】SELECTで取得した値がNULL値だった場合に別の値として取得する

今のプロジェクトで使ったのでメモ

現在API担当としてシステム開発を行なっているのですが、返却値として「NULL」を
返却せずに「0」を返却して欲しいという要望があったので、
クエリで何とかならないかと思ってCOALESCE関数という関数を見つけました。


関数の内容としては
リストの最初の非 NULL 値を戻すか、非 NULL 値がない場合は NULL を戻します。
と言うことが書いてありました。 翻訳がアレなのでちょっとわかりにくいと思います。 つまり、引数は可変長引数となっており、いくつでも(?)引数を指定することが可能です。 その上で、順番に指定されている引数をチェックしていき、「NULL」でない値を返却します。 「NULL」しか無かった場合は「NULL」を返却します。 例)
mysql> SELECT COALESCE(NULL,1); -> 1 mysql> SELECT COALESCE(NULL,NULL,NULL); -> NULL
例えば下記のようなテーブルがあったとします。
+---------+--------+-------+ | user_id | name | value | +---------+--------+-------+ | 1 | user01 | 5 | | 2 | user02 | NULL | +---------+--------+-------+
上記のテーブルを次のSELECTで取得した場合
SELECT 
  * 
FROM 
  `user`
+---------+--------+-------+ | user_id | name | value | +---------+--------+-------+ | 1 | user01 | 5 | | 2 | user02 | NULL | +---------+--------+-------+
「value」カラムにNULLが入ったまま返却されてきます。 次に上記のCOALESCE関数を使用してSELECTを実行します。
SELECT 
  `user`.`user_id`, 
  `user`.`name`, 
  COALESCE(`user`.`value`, 0) AS `value` 
FROM 
  `user`
+---------+--------+-------+ | user_id | name | value | +---------+--------+-------+ | 1 | user01 | 5 | | 2 | user02 | 0 | +---------+--------+-------+
という風に先程「NULL」が入っていたところが「0」として返却されてきます。 本来このような使い方をする関数では無いのかもしれないですが、この関数のお陰で 楽ができました。 終わり

2012/04/09

【雑記】4月ということで

さくらの写真を撮ってみました。

これは会社の近くのアニメイトの前のところです。

おわり