Apache (Win32) Tips
無保証:Unguaranteed
ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。
PC1(Windows 2000 Pro)で稼働しているApache(2)(win32) + PHP(win32)でネットワークドライブX:(\\PC2\share)上のAccessデータベース(hoge.mdb)にODBCを介してアクセスする。
- PC1のUser1
-
ユーザ名:User1(任意)
パスワード:Password1(任意) - PC1のUser1に「サービスでログオン」できる権限を付加
-
PC1[管理ツール]-[ローカルセキュリティポリシー] で[ローカルセキュリティ設定]が開く
[セキュリティの設定]-[ローカルポリシー]-[ユーザー権利の割り当て]-[サービスとしてログオン]のセキュリティでUser1を追加 - ApacheをUser1で起動
-
PC1[管理ツール]-[サービス]でApache(2)のプロパティ
[ログオン]タブで[アカウント]にチェック、[参照]からUser1を選択しパスワード:Password1を入力しApache(2)のサービスを再起動 - phpで確認
- print(get_current_user()); で、User1が表示される。
- User1に対し、PC2のhoge.mdbのアクセス権を与える
-
PC2[コントロールパネル]-[ユーザとパスワード]でユーザを追加
ユーザ名:User1
パスワード:Password1
を作成。
PC2の共有フォルダshareの[アクセス許可]で[追加]、User1を[フルアクセス]で追加 - ODBCソースの作成
-
\\PC2\shareをネットワークドライブX:として割り当てる
PC1[管理ツール]-[データソース(ODBC)]から[システム DNS]で[追加]
[Microsoft Access Driver (*.mdb)]を選択し[完了]
データソース名:DB(任意)
[データベース:][選択]で[ドライブ:]x: \\PC2\share を選択し、hoge.mdbを選択して[OK]
[詳細設定]
ログイン名:User1
パスワード:Password1 - phpでアクセス
- $odbc = odbc_connect("DB", "User1", "Password1");
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
Approaching Access Database (hoge.mdb) on network drive X:(\\PC2\SHARE) by using ODBC driver, from Apache(2)(win32) + PHP(win32) on PC1(Windows 2000 Pro).
- Making User1 on PC1
-
User Name:User1(any)
Password:Password1(any) - Granting Logon as Service Right to User1 on PC1
-
PC1[Administration Tools]-[Local Security Policy] ,then [Local Security Setting] will open.
[Local Security Setting]-[Local Policy]-[User Right Assignment]-[Logon as Service] Adding User1. - Booting up Apache(2) service as User1
-
PC1[Administration Tools]-[Service] Apache(2)'s property
Checking [Account] on [Logon] tab, Push [Reference] button, then choose User1 and input Password1. Finaly reboot Apache(2) service. - Confirming by PHP
- print(get_current_user()); User1 will be displaied.
- Granting access right for hoge.mdb on PC2, to User1 on PC1
-
PC2[Control Panel]-[User and Password], adding user
Username:User1(same as PC1)
Password:Password1(same as PC1)
Grating full access right for SHARE in PC2, to User1 - Making ODBC source
-
Assign \\PC2\SHARE as network drive X:
PC1[Administration Tools]-[Data Source(ODBC)],[System DNS] then [Add]
Choose [Microsoft Access Driver (*.mdb)],[Finish]
Data Source Name:DB(any)
[Date Base:] as[Drive:]x: \\PC2\SHARE,hoge.mdb
[Detail]
Login Name:User1
Password:Password1 - Approaching by PHP
- $odbc = odbc_connect("DB", "User1", "Password1");
getID3 で日本語(Shift_JIS)を無理矢理使う
mp3ファイルのタグ情報を取得できるphpスクリプトのgetID3()から、日本語(Shift_JIS)で書かれた情報を得て、Webページ(コードShift_JIS)に無理矢理表示する
サーバ構成
- OS
- Windows 2000 or XP
- ウェブサーバ(httpd)
- Apache2 + PHP4.3(or later)
getID3()をダウンロード&インストール
getID3()のページまたは、Sourceforge.netのgetID3() FIlesから、getID3()をダウンロードし、解凍、適宜ウェブサーバのフォルダにコピーする。
helperapps(getID3() Windows Support)をダウンロード&インストール
Sourceforge.netのgetID3() FIlesから、getID3() Windows Supportをダウンロードする。
適当なフォルダに解凍。ここでは、C:\Program Files\helperapps\ に解凍することにする。
getID3()、各スクリプトの修正など
getid3.php
冒頭の定義部分に、helperappsのパスを追加。↑で解凍したフォルダの短いファイル名を指定。
define('GETID3_HELPERAPPSDIR','C:\PROGRA~1\HELPER~1');
getid3.lib.php
function MultiByteCharString2HTML を修正する
getid3.lib.phpの1054行め辺りにある、
$HTMLstring = htmlentities($string, ENT_COMPAT, $charset);
文字列をHTMLエンティティに変換して渡している部分を、
$HTMLstring = $string;
と、そのままの文字列を渡すように書き換える。(んー無理矢理(^^;)
Apacheにmod_encoding.soをインストール
WebDAV - PukiWikiにあるWin32 向けのバイナリ:mod_encoding_win32_20040608.zipをダウンロードする。
手順
- ダウンロードしたmod_encoding_win32_20040608.zipを解凍
- 解凍されたmod_encoding.soをApacheのmodulesフォルダにコピー
- Apacheのconfフォルダにあるhttpd.conf(Apache定義ファイル)に
LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_encoding.c> EncodingEngine On SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS </IfModule>
を、追加する
- Apacheを再起動
実際に出力してみる
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/>
<title>getID3()テスト</title>
</head>
<body>
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . '/php/getid3/getid3.php'); //getID3のパス
$getID3 = new getID3; //初期化
$DirectoryToScan = "C:\MYDOCU~1\MYMUSI~1"; //mp3ファイルの存在するフォルダー
$dir = opendir($DirectoryToScan);
print("<table>\n");
while (($file = readdir($dir)) !== false) {
$FullFileName = realpath($DirectoryToScan.'/'.$file);
if (is_file($FullFileName)) {
set_time_limit(30);
$ThisFileInfo = $getID3->analyze($FullFileName);
getid3_lib::CopyTagsToComments($ThisFileInfo);
print("<tr>\n");
print("<td>" . $ThisFileInfo['comments_html']['title'][0] . "</td>\n"); //曲名
print("<td>" . $ThisFileInfo['comments_html']['artist'][0] . "</td>\n\n"); //アーティスト
print("</tr>\n");
}
}
print("</table>\n");
?>
</body>
</html>
ひとつ上のページへ