UbuntuのPHPを5.2にダウングレード

デフォで入る5.3を5.2(karmic)に変更する方法。

# dpkg -l | grep php
でみえるパッケージを控えて削除する。

karmicのapt-lineを追加する。
# vi /etc/apt/sources.list.d/karmic.list

deb http://old-releases.ubuntu.com/ubuntu/ karmic main restricted
deb http://old-releases.ubuntu.com/ubuntu/ karmic universe

特定のパッケージの優先度をkarmicに変更
# vi /etc/apt/preferences.d/php

Package: libapache2-mod-php5
Pin: release a=karmic
Pin-Priority: 991

Package: php-apc
Pin: release a=karmic
Pin-Priority: 991

Package: php-pear
Pin: release a=karmic
Pin-Priority: 991

Package: php5
Pin: release a=karmic
Pin-Priority: 991

Package: php5-cli
Pin: release a=karmic
Pin-Priority: 991

Package: php5-common
Pin: release a=karmic
Pin-Priority: 991

Package: php5-dev
Pin: release a=karmic
Pin-Priority: 991

Package: php5-gd
Pin: release a=karmic
Pin-Priority: 991

Package: php5-mcrypt
Pin: release a=karmic
Pin-Priority: 991

Package: php5-mysql
Pin: release a=karmic
Pin-Priority: 991

キャッシュをクリアしてアップデート
# aptitude clean && aptitude update

php5のバージョンが5.2になってるか確認
# aptitude show php5

パッケージ: php5
状態: インストール済み
自動的にインストールされた: no
バージョン: 5.2.10.dfsg.1-2ubuntu6

あとは削除したパッケージをインストールして完了

PHPでoutboundのIP指定とタイムアウト

早速、昨日今日でやったことのメモ

一つのサーバでIP Alias等で複数のIPアドレスを持っている場合、任意のIPアドレスを使用して、外に出て行く方法。

//使用するIPアドレス
$ip_addr = array(“192.168.10.10”, “192.168.10.11”);

//ソケットの生成
$sock = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );

//タイムアウト5秒
$sec = Array(“sec” => 5, “usec” => 0);
socket_set_option($sock, SOL_SOCKET, SO_SNDTIMEO, $sec);
socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, $sec);

//outboundのIPを指定する
socket_bind($sock, $ip_addr[0]);

あとは通常通りにsocket_writeとかすれば大丈夫。
エラーハンドリングはsocket_last_error();を使うといいっぽい。
サンプルコード引っ張ってきてやっつけだけどこんな感じに実装。

$socket_error = socket_last_error();
if($socket_error) {
print socket_strerror($socket_error) . “:” . $to . “\n”;
}