スタッフブログ
ようやく年末年始の連休ボケが抜けたgusagiです
今日は、Ryujiが先日書いた記事を踏まえて、Web Platform Installer(以下WebPI)でインストール可能なパッケージに含まれていないモジュールをIISに対応させる場合のはまりどころを2つほど紹介しようかと思います。
なお、この記事の前提として、動作を確認したのはWindows Server 2008 R2に対してWebPI経由でインストールしたIIS・MySQLなので、バージョンによっては動作が異なる可能性があります。
(1) MySQLのsql-mode
WebPIでMySQLをインストールした場合、sql-modeが「STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION」として設定されるようです。
この状態だと、モジュールインストールの際のテーブル作成でストレージエンジンを指定していないモジュールでは、fulltext indexを指定した際にエラーが発生します。
また、NOT NULL制約を持ったBLOB型・TEXT型のカラムに対して、値を指定しないINSERT文を発行した場合にもエラーが発生します。
私もよくやってしまっているのですが、デフォルト値の性質上、BLOB型・TEXT型のカラムに「NOT NULL default ''」を指定する方法は対応としては正しくなく、BLOB型・TEXT型のカラムに対しては必ず値を指定する必要があるようです。
(2) WinCache拡張
IIS7.5では、PHPの拡張「Windows Cache Extension for PHP」が有効となっています。
この拡張は、Windows Server上のIISなどでPHPを利用している場合に、実行コードをキャッシュして高速化してくれる拡張なのですが、テンプレートキャッシュなどもキャッシュされてしまうのか、あちこちで予期せぬエラーが発生してしまいます。
WebPIでXCLをインストールした場合は、mainfile.phpにWinCache拡張を無効にする記述があるので問題ないと思いますが、自前でXOOPSをインストールした場合などは、
をmainfile.phpの最初に記述すると良いようです。
今回は2つほどはまりどころを書かせて頂きましたが、他にもノウハウなどが溜まったらまた書かせて頂きます。
今日は、Ryujiが先日書いた記事を踏まえて、Web Platform Installer(以下WebPI)でインストール可能なパッケージに含まれていないモジュールをIISに対応させる場合のはまりどころを2つほど紹介しようかと思います。
なお、この記事の前提として、動作を確認したのはWindows Server 2008 R2に対してWebPI経由でインストールしたIIS・MySQLなので、バージョンによっては動作が異なる可能性があります。
(1) MySQLのsql-mode
WebPIでMySQLをインストールした場合、sql-modeが「STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION」として設定されるようです。
この状態だと、モジュールインストールの際のテーブル作成でストレージエンジンを指定していないモジュールでは、fulltext indexを指定した際にエラーが発生します。
また、NOT NULL制約を持ったBLOB型・TEXT型のカラムに対して、値を指定しないINSERT文を発行した場合にもエラーが発生します。
私もよくやってしまっているのですが、デフォルト値の性質上、BLOB型・TEXT型のカラムに「NOT NULL default ''」を指定する方法は対応としては正しくなく、BLOB型・TEXT型のカラムに対しては必ず値を指定する必要があるようです。
(2) WinCache拡張
IIS7.5では、PHPの拡張「Windows Cache Extension for PHP」が有効となっています。
この拡張は、Windows Server上のIISなどでPHPを利用している場合に、実行コードをキャッシュして高速化してくれる拡張なのですが、テンプレートキャッシュなどもキャッシュされてしまうのか、あちこちで予期せぬエラーが発生してしまいます。
WebPIでXCLをインストールした場合は、mainfile.phpにWinCache拡張を無効にする記述があるので問題ないと思いますが、自前でXOOPSをインストールした場合などは、
if (extension_loaded('wincache') === true) {
ini_set('wincache.fcenabled', 0);
ini_set('wincache.ocenabled', 0);
}
今回は2つほどはまりどころを書かせて頂きましたが、他にもノウハウなどが溜まったらまた書かせて頂きます。