Permanent Link to How to compile PHP5 on 64bit Linux (CentOS)

結構はまったので、メモで残しておきます。64bit環境のCentOS で PHP5 をコンパイルしたのですが、Apache用のDSOモジュールを作るまでが大変でした。下記のような感じでオプション指定をしていますが、まぁ、細かいことはどうあれ、要は64bit環境ではCFLAGSを指定しないといかんらしい、ということです。何も指定しないと、libxml2 が32bit環境用にコンパイルされてしまうらしくて、soが生成できません。

– 64bit環境

# CC=gcc CFLAGS="-fPIC" \
./configure prefix=/usr/local/php \
 --with-apxs2=/usr/local/apache2/bin/apxs \
 --enable-mbstring \
 --enable-mbstr-enc-trans \
 --enable-mbregex \
 --enable-sockets \
 --with-mhash=/usr/local/lib \
 --with-mcrypt \
 --with-mysql=/usr/local/mysql \
 --enable-zend-multibyte \
 --disable-cgi \
 --enable-inline-optimization \
 --enable-sigchild –enable-exif –enable-ftp \
 --with-gd –with-zlib-dir=/usr/lib \
 --with-jpeg-dir=/usr/lib \
 --with-png-dir=/usr/lib \
 --with-freetype-dir=/usr/lib

必要かどうかわかりませんが、configureで作成されたlibtoolファイルを編集しておきました。

# vi libtool

dlopen_support=yes
dlopen_self=yes
dlopen_self_static=no

コンパイルのログはとっておきましょう。

# make 2>&1 | tee ../php-5.1.4.make.log

コンパイルが終わってから、

# cat ../php-5.1.4.make.log | grep libphp5.la 

で表示されるかなり長いコマンドをコピーして、編集します。

/bin/sh /usr/local/src/php-5.1.4/libtool \
 --silent --preserve-dup-deps --mode=link \
gcc \
(略)
-o libphp5.la

/bin/sh /usr/local/src/php-5.1.4/libtool \
--silent --preserve-dup-deps --mode=link \
gcc -shared \
(略)
-o libphp5.so

これを実行します。

/bin/sh /usr/local/src/php-5.1.4/libtool \
--silent --preserve-dup-deps --mode=link \
gcc -shared \
(略)
-o libphp5.so

出来上がったファイルを /usr/local/apache2/modules/ へ移動してから、make install すればOKです。

# mv libphp5.so /usr/local/apache2/modules/
# make install 2>&1 | tee ../php-5.1.4.make-install.log

RadRails version up

railsをひさしぶりにさわろうと思ってインストールしなおしたところ、RadRailsを動作させるときにエラーがでまくる事態になりました。なんどかruby, rails をインストールしなおしたり、RadRailsを最新版にしたりしましたが、一向にエラーが減りません。さすがにおかしいと思って、workspaceを変更したところ、嘘のようにエラーが消えました。前のバージョンのプロジェクトはきちんと解析できないようです。こういったあたり、Javaではあまり発生しなかったことなので、ちょっと驚きました。ま、世の中そんなもんですかね。

Rails

Railsを使おうと思ってからはやくも3ヶ月ぐらい経つような気がしますが、いまだに使っていません。うーむ。

OOP 2.0

 世の中、Web2.0ばっかり注目をあびているので、「これからはOOP 2.0だ」と声を高くして言うことに決めました。

 ところで、Googleで「Web2.0」を検索すると結構まじめにWeb2.0を解説するページがありますが、「OOP2.0」を検索すると、なぜか「OpenOffice 2.0」がひっかかります。OpenOffice 2.0 はいつからOOPになったんでしょう。OOo 2.0 のはずではないでしょうか。

 といっていても仕方がないので、今度時間があるときに、OOP 2.0 について語ろうと思います。実際のところ、これまでのOOPはもう一度見直して、無駄を省き、高い開発効率と再利用性をそなえた OOP 2.0 へ進化するべきです。

JavaScript in XHTML1.0

XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition) の 4.8. Script and Style elementsによると、

In XHTML, the script and style elements are declared as having #PCDATA content.

ということらしいのですが、Firefox 1.5 for Mac OS X ではエラーになってしまいました。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3c.org/1999/xhtml">
<head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  <meta http-equiv="content-script-type" content="text/javascript" />
  <title>JavaScript Sample</title>

<script type="text/javascript">
<!--
document.write('XHTMLではJavaScriptの正しい表記は下記らしいのですが、FireFoxではエラー<br />');
// -->
</script>
</head>
<body>
<noscript>
<div style='border:solid; background-color:"#993333";'>
このページを正しく表示するためにはJavaScriptを有効にする必要があります。
</div>
</noscript>

<script type="text/javascript"><br />
<![CDATA[<br />
<!--<br />
document.write('Hello');<br />
// --><br />
]]><br />
</script><br />

</body>
</html>