- 動作環境確認用スクリプト
各種設定、ログイン、メール送信等、La!coodaWIZの動作確認をするためのスクリプトを作成した。
以下のファイルを test-env.php というファイル名で /wiz/ 下に置き
(右クリックして保存し、ファイル名を変更する))、
http://127.0.0.1/test-env.php にアクセスして使う。
test-env.php
- Windowsで WIZが動作するWebサーバは?
筆者が確認した範囲では、Apache, IIS, AN HTTPD, 04WebServerで動作する。
Black Jumbo Dog はプログラム内からの基本認証に対応していないので動作しない。
IISでは php4isapi.dll を使うように設定し、accept.confを以下と置き替えることが必要である。
accept.conf for IIS
さらに、gw.phpで $hostname を以下のように設定する。
$hostname = $_SERVER["HTTP_HOST"];
- user:admin, password:wiz=0yen でログインできないときには
上記 1. の動作環境確認用スクリプトの「ログイン」で
ユーザ名: TesT, パスワード: tESt と入力する。
「Webサーバ単体で認証処理が正常に動作することを確認しました。
処理を続けるには、ブラウザを一旦閉じてください。」
とアラートが表示されれば Webサーバで基本認証は問題なく動作している。
それにもかかわらずユーザ名: admin, パスワード: wiz=0yen でログインできないなら
それは WIZ 側のインストールや設定を疑ってみる。
一方、上記のメッセージが表示されないときは、WIZは全く無関係であり、
Webサーバ自体がそもそも基本認証が不可な状態である。
- 基本認証ではなくオンラインデモのような方法で認証するには
accept.confを以下と置き換える(右クリックして保存し、ファイル名を変更する)。
accept.conf
さらに、schedule2.phpの 273-275行目
require_once ($_ROOT_DIR_."class/scheduleinfo.php");
require_once ($_ROOT_DIR_."class/scheduleinfoowner.php");
require_once ($_ROOT_DIR_."class/dateinfo.php");
の3行を、109行目
include("./include/accept.conf");
の前に移動する。
ログアウトも必要なら、以下の logout,phpを使う。
logout.php
- IISでログインできないときには
IIS/5.1 ではコントロールパネルから以下のように設定する。
インターネットインフォメーションサービス -> 規定のWebサイトのプロパティ ->
ディレクトリセキュリティ -> 匿名アクセスおよび認証コントロール -> 編集 ->
匿名アクセスにチェック
ユーザー名:適当に選択
IISによるパスワードの管理を許可するにチェック
その他は一切チェックなし
- ログインダイアログを表示せずにログインするには
以下を参考にレジストリを変更すれば IEで
http://username:password@www.example.com/
にアクセスすれば、パスワードの入力は不要である。
(これは、特に La!coodaWIZに限った話ではない)
http://support.microsoft.com/kb/834489/ja#
の「HTTP URL または HTTPS URL のユーザー情報を処理する新しいデフォルトの動作を無効にする方法」
エクスプローラおよび Internet Explorer で新しいデフォルトの動作を無効にするには、
以下のレジストリ キーのいずれかで、iexplore.exe および explorer.exe の DWORD 値を作成し、
それらのデータを 0 (ゼロ) に設定します。
• すべてのユーザーに適用する場合は、次のレジストリ キーに値を作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
• 現在のユーザーにのみ適用する場合は、次のレジストリ キーに値を作成します。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
- メール送信できないときには
WIZでは phpの mb_send_mail関数でメール送信しており、基本的に php.iniを正しく設定すれば送信できる。
Outlookや BASP21等メールクライアントでメール送信できているなら、WIZでも可能である。
プロバイダのSMTPサーバで SMTP AUTHが必要かどうかで2つのケースに分かれる。
【Case 1】SMTP AUTH不要
この場合は、php.iniの [mail function] で、(OCNであれば)以下のように設定する。
SMTP = smtp.xxxx.ocn.ne.jp
smtp_port = 25
sendmail_from = xxxxxxx@yyyyy.ocn.ne.jp
;sendmail_path =
一方、SMTP AUTHが必要なときは、sendmail wrapperを使う方法と、自前のメールサーバを使う方法の2つがある。
【Case 2.1】sendmail wrapper -> プロバイダの SMTPサーバに送信
sendmail wrapperとしては以下のページで紹介している sendmane.exe などを使う。
http://homepage1.nifty.com/yito/anhttpd/faq/sendmane.html
(注)sendmaneは商用利用禁止なので、上記ページの「同類のプログラム」を使うことになる。
この場合は、php.ini を以下のように設定する。
;SMTP = localhost
;smtp_port = 25
;sendmail_from = me@example.com
sendmail_path = "c:\sendm\sendmane.exe -t -i"
【Case 2.2】自前のメールサーバ -> プロバイダの SMTPサーバに中継
自前のメールサーバは XMail, PMail Server, Kirium, Radishなどを使って立てる。
この場合は php.ini を以下のように設定する。
SMTP = localhost
smtp_port = 25
sendmail_from = username@domainname
;sendmail_path =
Webサーバが IISのときは、【Case 2.1】では以下のエラーが出てメール送信不可。
Warning: mb_send_mail() [function.mb-send-mail]: Could not execute mail delivery program 'c:\sendm\sendmane.exe -t -i' in ..
メールサーバが POP before SMTPのときは、【Case 2.1】において、
sendmane.exeを POP before SMTP対応に設定をする。
上記 1. の動作環境確認用スクリプトでメール送信ができれば WIZでも送信できる。
- session.save_path の設定について
Windowsでは
session.save_path = "/temp"
ではなく
session.save_path = "c:\temp"
のようにドライブ名付きで設定する。ドライブ名を省略すると、
実行中のスクリプトが存在するドライブ直下の tempフォルダと解釈され、
存在しないと warningになる。
また、session.save_pathをコメント行にすると、C:\windows\temp が使われので、
コメントにするのも手である。
そのフォルダ内には "sess_" で始まるファイルが作成されるので、手動で削除が必要である。
- MySQL 5.0を使うには
MySQL 4.0は2006年9月末でサポート終了となり、公式サイトでの配布は終了している。
MySQL 4.1のサポートも2006年12月末で既に終了している。こちらは現在も配布は続いているが、
それも時間の問題かもしれない。
今後のために WIZで MySQL5.0を使うにはどうすればいいかをまとめまた。
内容的に特に新しいことはない。
Windows上で一応確認はしたが、十分な検証はできていない。
人柱に期待する。
また、以下の説明は MySQL 4.1でもそのまま適用可能である。
(1)MySQLのインストール
例えば以下の解説などが参考になる。
・http://www.nihon-eng.co.jp/c-break/TechNote/mysql/MySQL5_Inst.htm
・http://www.y2sunlight.com/ground/?MySQL4.1%2F3.MySQL%A5%B5%A1%BC%A5%D0%20Windows%C8%C7%A4%CE%C0%DF%C4%EA
(2)my.iniの編集
パスワードや文字コードに関連して、以下を変更する。
[mysql]セクション内
default-character-set=ujis に変更
[mysqld]セクション内
以下の 2行を追加
old-password
skip-character-set-client-handshake
default-character-set=ujis に変更
sql-mode行を
sql-mode="MYSQL40" に変更
(MySQL 4.1の my.iniには sql-mode 行はないのでこの行を追加)
my.iniのその他の行はとりあえず変更しない。
(3)MySQLの再起動
MySQLのサービスを再起動する。
(4)createDbForMySQL.sqlファイルの編集
以下の変更によって、インストール時のエラーがなくなる。
185行目
ac_date DATETIME NULL DEFAULT 'now', を
ac_date DATETIME NOT NULL, に
620行目
id int unsigned DEFAULT 0 NOT NULL AUTO_INCREMENT, を
id int unsigned NOT NULL AUTO_INCREMENT, に
(5)mysql -u root -p****** < createDbForMySQL.sqlを実行
(6)wiz\bbs\db\mysql.phpの変更
以下の各行で、DEFAULT 0 あるいは DEFALT '0' を削除する。
この変更をしないと掲示板の設定でフォーラムが作成できない。
219行目
id int unsigned NOT NULL, に
251行目の中
id int unsigned DEFAULT '0' NOT NULL AUTO_INCREMENT,
の箇所を
id int unsigned NOT NULL AUTO_INCREMENT, に
280, 339, 392行目
id int unsigned NOT NULL AUTO_INCREMENT, に
(7)その他
環境によっては、phpMyAdminに rootでログインするためには
set password for root@localhost=old_password('******');
を実行することが必要かもしれない。
- Windowsで PostgreSQLを使うには
PostgreSQL 8.2.3 の場合のインストール手順。
1. PostgreSQLのインストール
パスワードの設定以外は、デフォルトのまま進めても構わない。
以下では、User: postgres, Password: xxxx と仮定して説明する。
2. データベース masters の作成
createdb -U postgres -E EUC_JP masters
Password: xxxx
CREATE DATABASE
3. ユーザ nobody の作成
createuser -U postgres -P nobody
Enter password for new role: yyyy
Enter it again: yyyy (nobodyのパスワードを yyyy とする)
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databasees? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Password: xxxx
CREATE ROLE
4. 設定ファイル createDbForPgSQL.sql の変更(v1.4.0の場合)
配布ファイルでは実行順序に問題があり、schedule_date のところで ERRORが発生する。
231〜260行目("CREATE TABLE reservation" 関連)を切り取り、
"CREATE TABLE transactions (" (切り取る前の行数で 298行目)の前に挿入する。
5. テーブルの作成/初期化
psql -U postgres masters < createDbForPgSQL.sql
Password for user postgres: xxxx
出力リストに ERROR がないかどうかを確認すること
6. gw.php の変更
$db_password = "yyyy"; 上記 3.で設定したnobodyのパスワード
$db_port = "5432";
$db_type = "PostgreSQL";
7. アクセス
http://127.0.0.1/wiz/
- PHP5で動作させるには
【問題1】スケジュール帳で「前の月」「次の月」が正しく表示されない。
[解決法]:schedule2.phpの 2485行目を以下のように修正する。
// カレンダー上の初日取得
$tempDateInfo = $dateInfo;
↓
// カレンダー上の初日取得
$tempDateInfo = new DateInfo();
[参考] PHP5での異常な動き、スケジュール帳の月表示
【問題2】掲示板の設定、表示ページにアクセスできない。
[原因]:wiz\bbs\lang\japanese.php の中の関数名 date_format が問題の模様。
PHP の同名の関数とかぶっているから?
[解決法]:関数名を date_format_wiz とでも適当に変更する。
date_format を呼んでいる以下の箇所も合わせて変更が必要。
wiz\bbs\index.php の 186行目
wiz\bbs\read.php の 526行目
wiz\bbs\search.php の 487行目
wiz\bbs\admin\pages\easyadmin.php の 65行目
wiz\bbs\include\multi-threads.php の 55行目
wiz\bbs\include\threads.php の 120行目と 124行目
wiz\bbs\scripts\news.php の 50行目
(注) 掲示板の設定には入れるがフォーラムが作成できない現象とは異なる。
その場合は ユーザ(nobody)の作成権限の問題と思われる。
【問題3】ファイル共有でファイルのアップロードが失敗する(これは PHP4でも起きる)。
[原因]:php.iniで、以下の組み合わせの場合に起きる。
output_handler = mb_output_handler
mbstring.http_output = SJIS
[解決法]:php.iniを以下のように変更する(コメント化でもよいが)。
output_handler = mb_output_handler
↓
output_handler =
もし output_handlerを変更できない理由があるなら、
mbstring.http_output = SJIS
↓
mbstring.http_output = pass
でもよい。どちらかというと後者の方をお勧めする。
(注) 上記の内容とは関係ないが、ファイル共有したファイル名の一部消失について
の現象は Windows上では起きないようである。
以下 2006.06.07追記
【問題4】メール送信時に undefined function i18n_convert() エラーが発生する。
[原因] PHP5には i18n_convert 関数がないから。
[解決法] 以下の10箇所の mb_send_mailを呼んでいる箇所を修正する。
wiz\wiz\flowpetit.php 669行目、787行目、888行目
wiz\wiz\schedule2.php 1252行目
wiz\wiz\telmemo.php 227行目、265行目
wiz\wiz\workflow.php 1062行目、2316行目
wiz\wiz\class\keitaiRoutineForPc.php 36行目
wiz\wiz\class\NoticeDrawUp.php 251行目
例えば最初の wiz\wiz\flowpetit.php の 669行目の場合であれば、
mb_send_mail($email, ("=?iso-2022-jp?B?" . base64_encode(i18n_convert("[WIZ] ワークフロー 承認済","JIS","EUC")) . "?="), $mailstr, "From:$fromMailStr");
↓
mb_send_mail($email, "[WIZ] ワークフロー 承認済", $mailstr, "From:$fromMailStr");
のように、mb_send_mail内の
「("=?iso-2022-jp?B?" . base64_encode(i18n_convert(」
と
「,"JIS","EUC")) . "?=")」
を削除する。他の 9箇所も同様。
Subjectの文字コード変換、base64エンコード、iso-2022-jpの付与は外で自分で実行しなくても
mb_send_mail関数の中で実行される。
- リンク
La!coodaWIZフォーラム