2011年10月1日土曜日

Windowsの64ビットOS+IISでPHP sendmailのやり方

PHPのメール送信を行う場合、まずphp.iniの「mail function」の設定を行います。
しかしいざSMTPサーバの設定をしようとするとその上の行に「For Win32 only.」とコメントされています。

そこで「sendmail」の方を使ってみたところ正常にメールが送信されるようになりました。 (コメントにはFor Unix only.と書いてますが、Windowsでも動作しました)

簡単にですが以下に導入手順
1.まずsendmail.zipをダウンロード
2.ダウンロードしたsendmail.zipを任意の場所に解凍
(c:¥app¥sendmailとか)
3.次にphp.iniを編集
[mail function]
; For Win32 only.
; SMTP = localhost
; smtp_port = 25

; For Win32 only.
; sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "c:¥app¥sendmail¥sendmail.exe -t"
4.次にsendmailディレクトリ内にあるsendmail.iniを編集
[sendmail]
smtp_server = localhost
smtp_port = 25
(かなり抜粋して書いてますので必要な部分を適宜書き換えてください) 5.あとはIISを再起動で設定完了

PHPでメール送信プログラムを書いて、送信できればOK。
それほど面倒な設定もないので試してみてください

2011年9月26日月曜日

Mac OS X(Lion)にApache2+PHPをインストール

Mac OS XにはWebサーバ(Apache2)とPHP(5.3.6)が既にインストールされていますがデフォルトでは無効となっています。

そこで有効にする手順をメモ程度に。。。
まずはPHPを有効にします。
「ユーティリティ」→「ターミナル」を開き以下のコマンドを入力
sudo nano /etc/apache2/httpd.conf
nanoというエディタがターミナル上で開きます。
カーソルキーで画面を下に移動し以下が記述された行を探します。
#LoadModule php5_module libexec/apache2/libphp5.so
この行の先頭にある「#」を削除します。
nanoエディタを保存して終了します。
(contorl+Xキー → Yキー → Enterキーの順に)

次にApacheを有効にします。
「システム環境設定」→「共有」を開きます。
サービス一覧に「Web共有」の項目にチェックをつけます。
これでWebサーバーが起動します。

あとは適当な場所にphpinfo.phpを作成してWebブラウザからアクセス
正しく有効になっていればPHPの情報が表示されます。

2011年9月21日水曜日

IIS6.0にPHP5.3をインストール

IISにPHPをセットアップするときにせっかくだから最新のPHPを入れてみようと思って今まで通りダウンロードサイトからZip版PHPをダウンロードして展開。

次に管理ツールのIISを開いてホームディレクトリで構成、追加で実行ファイルが「php5isapi.dll」と。。。

あれ!?ない!?

どうも最新のモジュールにはphp5isapi.dllが存在しないみたい。
FastCGIを利用するといいみたいなので早速やり方を調べてインストール完了!!

やり方は以下のサイトが役に立ちました。


IIS7にPHP5.3をインストール

PHPを公式サイトからダウンロードします。
(今回はphp-5.3.7-nts-Win32-VC9-x86.zipをダウンロードしました)

ダウンロードしたZipファイルを解凍して「C:¥php」として配置します。

次にIISの設定を行います。
管理ツールからIISマネージャを開きます。

マシン名をクリックして右の機能ビューから「ハンドラマッピング」を開きます。
ハンドラマッピング画面の右の操作パネルから「モジュールマップの追加」をクリックし、以下の設定を行います。

要求パス:*.php
モジュール:FastCgiModule
実行可能ファイル:c:¥php¥php-cgi.exe
名前:PHP 5.3.7

OKをクリックするとマッピングの登録が完了します。
以上でとりあえずPHPを動かす環境は整います。

あとは必要に合わせてINIファイルを変更していきます。
(私の場合、INIファイルのタイムゾーンを設定しないと正常に動作しませんでした)

[DATE]
date.timezone = Asia/Tokyo

↑こんなかんじ

2011年9月14日水曜日

PHP5.3以降のMicrosoft SQL Server接続について

PHP5.3以降、Microsoft SQL Serverの接続に使用されていたエクステンション(php_mssql.dll)が提供されなくなりました。

代わりにMicrosoftからSQL Server Driver for PHPというエクステンションが提供されます。
しかし、問題となるのは今までPEAR::DBやPEAR::MDB2が動作しないようです。

SQL Server Driver for PHPを使用する場合は以下のサイトが参考になりました。
PHP on IISからSQL Serverを使う | IISでWebアプリケーション

2012.6.7
設定だけして動かしてなかったんで操作のやり方だけ載せておきます。
<?php
    // 接続
    $conn_info = array(
                            "Database" => "sample",
                            "UID" => "sa",
                            "PWD" => "",
                            "CharacterSet" => "utf-8");
    $conn = sqlsrv_connect("sqlserver¥instance", $conn_info);

    // SQL実行
    $sql = "SELECT * FROM emp";
    $result = sqlsrv_query($conn, $sql);

    while ($row = sqlsrv_fetch_array($result))
    {
        print $row{"emp_name"};
    }

    // ステートメント解放
    sqlsrv_free_stmt($result);

    // 切断
    $sqlsrv_close($conn);
?>

こんなかんじです。
詳しくはマニュアルを。
http://php.net/manual/ja/book.sqlsrv.php


2011年8月25日木曜日

wordpressのパーマリンク設定 其の二(IIS7+URL Rewrite)

其の一ではIIS6+ISAPI_Rewriteでのパーマリンクを書きましたが次にIIS7+URL Rewrite。
IISのバージョンによってツールを使い分けないといけませんのが面倒ですがまずwordpressのドキュメントにも記載されているURL Rewriteをダウンロードします。

インストールは特に問題ないはずです。

インストール後、IISの管理画面にURL Rewriteという項目が新たに追加されますが、自分の環境では特にここれ触れることなく設定ができました。

設定はwordpressのパーマリンクを指定するだけ。そうするとwordpressのインストールディレクトリに"web.config"というファイルが作成されます。

念のためIISを再起動してサイトを見ると設定が反映されます。

wordpressのパーマリンク設定 其の一(IIS6+ISAPI_Rewrite)

以前にapache+mod_rewriteを使ったパーマリンクの設定を書きましたが今回はIIS6+ISAPI_Rewrite。
ISAPI_Rewriteについてはこっち(大したことは書いてませんが)

ISAPI_Rewriteの設定は以下
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?p=$1 [NC,L]

テスト環境とかだと複数のワードプレスをディレクトリ分けてやってるとこはあると思いますがそういった場合は環境に合わせて以下のように修正します。
RewriteBase /wordpress/ ←ここ
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wordpress/index.php?p=$1 [NC,L] ←ここ

これでIISの設定は完了。
あとはwordpress側でパーマリンクの設定をすることでapache+mod_rewriteと同じような動作をすることができます。