こんにちわ。
Apacheのログファイルを、一般ユーザとして閲覧しようとしたらエラーが閲覧できないことがあります。
$ tail -f /var/log/httpd/access_log
tail: `/var/log/httpd/access_log' を 読み込み用でオープンできません: 許可がありません
tail: 何もファイルは残っていません
$ tail -f /var/log/httpd/access_log
tail: `/var/log/httpd/access_log' を 読み込み用でオープンできません: 許可がありません
tail: 何もファイルは残っていません
http://example.com/index.phpというURLを短縮して、
http://example.com/のようにディレクトリ名でindex.phpやindex.cgiを実行するテクニックを紹介します。
CentOS5.4でApacheの初期設定をしていて、/var/www/html/内のファイルを表示させるところまでは簡単にできたんだけど、
VirtualHostで/home/hoge/* 内のファイルを表示させようとするとできない。
#!/usr/bin/perl (Linuxの場合)
↓
#!c:¥perl¥bin¥perl (Windowsの場合)
これって不便ですよね。めちゃくちゃ簡単でした。
sudo apt-get install apache2数分でインストールが終わる。
hoge.example.com - - [14/Mar/2008:00:51:46 +0900] "GET /2008/03/15.html HTTP/1.1" 200 5539 "http://www.google.co.jp/search?q=家庭教師&hl=ja&c2coff=1&rls=GGLD,GGLD:2005-11,GGLD:ja&start=330&sa=N" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"このままだと見にくいし分析のしようがないので、タブ区切りCSVに変換したいと思います。
^(.*) (.*) (.*) \[(.*)\] "(.*)" (.*) (.*) "(.*)" "(.*)"$
\1\t\2\t\3\t\4\t\5\t\6\t\7\t\8\t\9\n
↓実行画面
WindowsXP上に、Apache2.2.8とPHP4.4.8をインストールしたら、下記のエラーが出てApacheが起動しなくなります。
エラーメッセージ:
Error:The requested operation has failed!
Error The request operation has failed!
というエラーが出て起動に失敗する。
さらに、ApacheのTest Configurationを実行すると、次のようなエラーが出る。
C:\Documents and Settings\Administrator>httpd.exe: Syntax error on line
128 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf:
Cannot load C:/php/sapi/php4apache2.dll into server: \x8ew\x92....
Note the errors or messages above, and press the <ESC> key to exit.
PHPのsapiフォルダにあるphp4apache2.dll というファイルが、apache2.2.xに対応していないそうです。
Apache 2.2.xとPHP 4.4.0-4.4.7用に対応したphp4apache2.dll-php4.4.x.zipをゲットして、設定します。
LoadModule php4_module "c:/php/php4apache2.dll"
AddType application/x-httpd-php .php
これで無事、Windows上でApache2.2.xとPHP4.4.xが起動できると思います。(^^)v
・・・とここまで書いたところで、既に同じことを書いてあるサイトを発見。orz
PerlでDBIモジュールを使ってmySQLを操作できるようになりました!
ワーイワーイ。(^^)
これでやっと、
LAMPデビューです!!
パチパチ
( 注: LAMP = Linux, Apache, mySQL, Perl/PHP )
長く苦しいい道のりだった。くくく・・・
超簡単なアプリを作ったので公開します。
前回と同じタイムスタンプです。
前回は裏の仕組みがPerl+CSVでしたが、今回はリッチにPerl+DBI+mySQLです。
大いなる第一歩です。
ああ感激。
ソースはこれ↓
========== dbi_timestamp.cgi ==============
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
use DBI;
$user = '***';
$passwd = '***';
$dbh = DBI->connect('DBI:mysql:db:localhost', $user, $passwd);
$sth = $dbh->prepare("
INSERT INTO timestamp
VALUES(NULL);
");
$sth->execute;
$sth = $dbh->prepare("
SELECT * FROM timestamp ORDER BY timestamp DESC
");
$sth->execute;
while(@a = $sth->fetchrow_array){
print "$a[0]\n";
}
$sth->finish;
$dbh->disconnect;
print "DBI test is done!\n";
====================================
参考サイト
http://2php.jp/mysql/insert.html
http://www.rfs.jp/sb/sql/index.html