ファイヤーウォール越しのFTPの.netrc

ファイヤーウォール越えのFTPをする場合の
.netrcの書き方

machine [ホスト名or IPアドレス]
login [ログイン先マシンのuser]@[FW1のuser]@[ログイン先のマシン]
password [ログイン先マシンのpw]@[FW1のpw]

この.netrcを書いておけば
シェルスクリプト等でファイヤーウォール越しにアップロード等が簡単になる。

PEAR AUTHでSOAP5

PEAR::AUTHを利用して認証をするときに
動作の確認をしたい場合
PEARのマニュアルのサンプルが非常によいので参考に
pear install Auth
pear install Log

あたりをインストールして

<?phprequire_once "Auth.php";require_once 'Log.php';require_once 'Log/observer.php';

// ログイン画面を表示するコールバック関数function loginFunction($username = null, $status = null, &$auth = null){ /* * HTML 出力を変更し、作成するアプリケーションに * あわせるようにします */ echo "”; echo “ユーザ名:
“; echo “パスワード:
“; echo “”; echo “”;}

class Auth_Log_Observer extends Log_observer {

var $messages = array();

function notify($event) {

$this->messages[] = $event;

}

}

$options = array( ‘enabelLogging’ => true, ‘wsdl’ => ‘http://SOAPのURL/Login?wsdl&#8217;, ‘method’ => ‘loginメソッド’, ‘usernamefield’ => ‘user_idのフィールド名’, ‘passwordfield’ => ‘passwordのフィールド名’, ‘matchpasswords’ => false, ‘_features’ => array(), );$a = new Auth(“Array”, $options, “loginFunction”);

$infoObserver = new Auth_Log_Observer(PEAR_LOG_INFO);

$a->attachLogObserver($infoObserver);

$debugObserver = new Auth_Log_Observer(PEAR_LOG_DEBUG);

$a->attachLogObserver($debugObserver);

$a->start();

if ($a->checkAuth()) { /* * サイトに出力する内容をここに書きます */ print “認証に成功しました。
“;}

print ‘

ログ出力

‘ .’PEAR_LOG_INFO レベルのメッセージ
‘;

foreach ($infoObserver->messages as $event) { print $event[‘priority’].’: ‘.$event[‘message’].’
‘;}

print ‘
‘ .’PEAR_LOG_DEBUG レベルのメッセージ
‘;

foreach ($debugObserver->messages as $event) { print $event[‘priority’].’: ‘.$event[‘message’].’
‘;}

print ‘
‘;?>こんな感じでログが見れる場合によってログアウト画面を作成したりしてテストすると良い

WordPress プラグインのアップデートにssh2

ssh2を利用するとwordpressのアップデートが便利になります。

phpでssh2を有効にする必要があります

yum -y install openssl-devel

# wget http://surfnet.dl.sourceforge.net/sourceforge/libssh2/libssh2-1.0.tar.gz
# tar zxf libssh2-1.0.tar.gz

# cd libssh2-1.0/

# ./configure

# make

# make install

pecl install ssh2

php.iniに
extension=ssh2.soを追加

$ cd ~/
$ ssh-keygen
$ cd .ssh
$ cp id_rsa.pub authorized_keys
$ cd ~/
$ chmod 755 .ssh
$ chmod 644 .ssh/*

このキーをwordpressに設定することで
実行可能となる

さらないwp-config.phpに

define(‘FTP_PUBKEY’,’/home/ユーザ名/.ssh/id_rsa.pub’);
define(‘FTP_PRIKEY’,’/home/ユーザ名/.ssh/id_rsa’);
define(‘FTP_USER’,’user1′);
define(‘FTP_PASS’,”);
define(‘FTP_HOST’,’localhost’);

を追加するとプラグインのアップデートで接続情報を聞かれなくなる

simple_xmlで@attributesにアクセス

XML DOMOM関数では属性(attribute)の名前から属性オブジェクトを取得するにはget_attribute()で取得できるが
simple_xml関数の場合はattriburesを用いてアクセスする

$string = <<<XML

1

XML;

$xml = simplexml_load_string($string);
foreach($xml->foo[0]->attributes() as $a => $b) {
echo $a,’=”‘,$b,””n”;
}

http://php.mirror.camelnetwork.com/manual/ja/ref.simplexml.php

Ethna セットアップでいまさらForbidden

Forbidden

You don’t have permission to access /index.php
on this server.

えっ!

でもってログを見てみれば

Symbolic link not allowed or link target not accessible

はいはい、そういえば、あったな

とapacheの設定を見てみるも

には

Options FollowSymLinksと記述されている

記憶を呼び覚ますと、やっと気づいたethnaの動作確認で$ ln -s /home/test/sample/www/index.php .的なことをやっていたんだがsampleは755になってるんだけどその上位のtestが700になってた

Post to Twitter

サーバ移行の日程をすっかり失念していました。
過去の投稿が飛んでしまいました。
手動でサルベージしましたので、目的のエントリーが喪失してしまっていたら、すみませんm(__)m

セッション周りの設定

ん〜セッションタイムアウトとかキャッシュの設定とかややこしい session.cache_limiter=nocache ブラウザにセッション変数を保存しない。戻るで再読み込みのダイアログが表示される session.cache_limiter=private ブラウザにセッション変数が保存される session.cache_limiter=public ブラウザ、キャッシュサーバにセッション変数が保存される session.cache_expire nocacheで無い場合セッションの保存時間を指定できる session.gc_maxlifetime ガベージコレクションの破棄時間 htaccess等で別々の時間を設定しても同一のディレクトリにテンポラリファイルを格納している場合はそのうちの最小設定によりファイルが削除される可能性がある session.gc_probability ガベージコレクションの破棄確立 session.cookie_lifetime(秒)ブラウザ上に保存されるクッキーの有効時間これはcacheのprivateとか関係なくセッションIDとか保存しそう

CodeIgniterのショートタグ

CodeIgniterは可読性アップのため、ショートタグ使ったりするんですね

引き継いだソースがそうだったので
config.phpの
$config[‘rewrite_short_tags’] = FALSE;
の部分をTRUEに変更して走らせたところ

libraries/Loader.php(706) : eval()’d code 44
こんなエラーがつらつらと

該当するLoader.phpを見てもその行とか関係ないし

CodeIgniterのユーザガイドを参照してところ

この機能を利用する場合、ビューファイルでPHPエラーが起こったとき、エラーメッセージと行番号が正しく表示されないのに注意してください。すべてのエラーは、eval() を実行したときのエラーとして表示されます。

との記述が

ん~仕様なんですね、ショートタグをCIで有効にすると使うとエラー表示おかしくなるって

これだと困るので、さっきのconfig.phpは元に戻して
このプロジェクトのみ.htaccessにて

php_flag short_open_tag on

と設定して逃げることとしました。

CodeIgniterでDB接続

CodeIgniterではモデルを利用するとき自動では接続してくれない
config/database.php内でデータベース情報を設定し
利用時には
$this->load->model(‘Model_name’, ”, TRUE);
の形で呼び出すことで(最後TRUE部分)
DBへの接続が行われる

またこの部分に

$config[‘hostname’] = “localhost”;
$config[‘username’] = “myusername”;
$config[‘password’] = “mypassword”;
$config[‘database’] = “mydatabase”;
$config[‘dbdriver’] = “mysql”;
$config[‘dbprefix’] = “”;
$config[‘pconnect’] = FALSE;
$config[‘db_debug’] = TRUE;
$config[‘active_r’] = TRUE;

$this->load->model(‘Model_name’, ”, $config);
とすることで都度接続を切り替えることもできる
参考:
http://ci-user-guide-ja.nought-point-999.net/general/models.html

Ethna:getObjectPropList

たぶんこれ使いこなすと便利になるのかな?とりあえずクラスドキュメントから引用 getObjectPropList (line 207) オブジェクトプロパティの一覧を返す getObjectList()メソッドは条件にマッチするIDを元にEthna_AppObjectを生成するためコストがかかる。こちらはプロパティのみをSELECTするので低コストでデータ を取得することが可能。 * return: array(0 => 検索条件にマッチした件数, 1 => $offset, $countにより指定された件数のプロパティ一覧) Ethna_Error:エラー * access: public mixed getObjectPropList (string $class, [array $keys = null], [array $filter = null], [array $order = null], [int $offset = null], [int $count = null]) * string $class: Ethna_AppObjectの継承クラス名 * array $keys: 取得するプロパティ一覧(nullなら全て) * array $filter: 検索条件 * array $order: 検索結果ソート条件 * int $offset: 検索結果取得オフセット * int $count: 検索結果取得数