Archive for the ‘PHP’ Category
by cmf@ohtan管理人
巷で噂のnginx+php+mysql+memcached+wordpressの組み合わせをVirtualBox上のCentOS6で構築してみた。
構築方法はネット上にたくさんあるので割愛。
http://d.hatena.ne.jp/red_snow/20101026/1288057498
http://blog.kubox.info/?p=175
http://blog.iss.ms/2011/01/08/130929
http://docs.komagata.org/4809
http://www.barasu.org/pc/4545.html
個人的な感想としては相当なアクセス(ウチではありえないw)がないと、apache+php+wordpress+WP Super Cacheとの差はない気がする。
nginxのconfがもうちょっとapacheライクな書き方だったらわかりやすいんだけどなぁ。
あとphpがモジュール化できたらなぁ・・・と思う。
nginxってなんかdjb(qmailとか)に近いイメージを持っているのは私だけだろうか・・・
apacheがこれに対抗して進化してくれれば個人的には嬉しい( ´ー`)
by cmf@ohtan管理人
予想通りすぐにリリースされましたね( ´ー`)
ということで早速RPM作りました。
※本家にアップされているので中止しました。
他にもここ数日下記RPMをひっそりアップしてます。
bind-9.8.2
postfix-2.8.10
次はMySQL5.5.24のRPMを作る予定。
VineSeedに5.5.23のRPMソースがあるからちゃちゃっと5.5.24のRPMを作れるといいんだけどなぁ・・・
by cmf@ohtan管理人
PHP5.3.12がリリースされたのでRPM作ろうかと思ったけど脆弱性対策が不十分らしいので、またすぐリリースされるかな~?
PHP 5.3.12とPHP 5.4.2、脆弱性が完全には修正されていないことが判明
ちょっと様子を見よう( ´ー`)
by cmf@ohtan管理人
元々はShadowBox JSを使っていたのですが、ちょっとばかし手を加えたりしていたため、ShadowBox JSがアップグレードする度に、再度修正して・・・なんてことをするのがしんどくなってきたので、この際自分で作ってしまおう!
と思い立ったのですございます。
とりあえずこのブログに組み込んで現在テスト中です。
■HTMLのリンク
ShadowBox JS
■YouTUbeのリンク
Hello My Baby, Hello My Honey, Hello My Ragtime Gal
■ニコニコ動画のリンク
イースの曲をヴァイオリンで弾いてみた その4 バレスタイン城
■画像のリンク

動画はYoutubeとニコニコ動画に対応しております。
このプラグインはiframeではなくてobjectを使っているのですが、最近のブラウザはインラインフレームの制約が厳しい(特にOperaとかOperaとか)ので対象のURL先でリダイレクトなんかされちゃうともうお手上げなんですよね。
この制約を回避できる方法があればよいんだけど、今のところ解決策は無し・・・
by cmf@ohtan管理人
下位互換性のない変更点
相変わらずエグイ仕様変更するなぁ・・・
↓が結構影響がでかいんじゃないなかな・・・
呼び出し時の参照渡しをサポートしなくなりました。
by cmf@ohtan管理人
phpのcurlを使って自分のウォールに投稿する方法です。
<?php
$app_id = '';
$secret = '';
$return_url = '';
//アクセストークンを取得
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id={$app_id}"
. "&redirect_uri=" . urlencode($return_uri)
. "&client_secret={$secret}"
. "&code={$_REQUEST["code"]}";
$access_token = str_replace('access_token=', '', file_get_contents($token_url));
//タイトル
$feed["name"] = "タイトルのテスト";
//本文
$feed["description"] = "本文のテスト";
//サムネイル画像
$feed["picture"] = "http://www.example.jp/thumbnail.png";
//タイトル、サムネイル画像のリンク先URL
$feed["link"] = "http://www.example.jp/";
//表示するドメイン
$feed["caption"] = "apps.facebook.com";
$resp = null;
try {
$params = 'access_token='.$access_token;
foreach ($feed as $key=>$val) {
$params .= "&{$key}=".urlencode($val);
}
$url = "https://graph.facebook.com/me/feed";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$resp = curl_exec($ch);
curl_close($ch);
} catch (Exception $e) {
$resp = $e->getMessage();
}
print_r($resp);
?>
※ちなみにウォールに投稿できる項目「message」はアプリの固定メッセージ的なものを書いてはいけないらしい。
by cmf@ohtan管理人
ここ1ヶ月、仕事でFacebookアプリばかりを作っているのですが、FQLを使って自分のプロフィールとか友達のリストを取ろうとした時、日本語の氏名を取りたいなんて場合はGraph APIではなく、Legacy REST APIを使うと取れるようです。
サンプル
<?php
$app_id = '';
$secret = '';
$return_url = '';
//アクセストークンを取得
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id={$app_id}"
. "&redirect_uri=" . urlencode($return_uri)
. "&client_secret={$secret}"
. "&code={$_REQUEST["code"]}";
$access_token = str_replace('access_token=', '', file_get_contents($token_url));
//uid,name,emailを取得
$fql_query = "https://api.facebook.com/method/fql.query?"
. 'query=SELECT+uid%2Cname%2Cemail+FROM+user+WHERE+uid%3Dme%28%29'
. "&access_token={$access_token}"
. "&format=json";
$ret = json_decode(preg_replace('/("¥w+"):(¥d+)/', '¥¥1:"¥¥2"', file_get_contents($fql_query)), true);
?>
最後の
json_decode(preg_replace('/("¥w+"):(¥d+)/', '¥¥1:"¥¥2"', file_get_contents($fql_query)), true);
preg_replaceは何をしているかというとjson_decodeでそのまま変換するとuidが長すぎて「1.23456789912346E+018」みたいな感じになるのでjson_decodeの前にゴニョゴニョしてます。
by cmf@ohtan管理人
PHP 5.4 がついにリリース ― Web を高速に!
ついにリリースされちゃいましたね。
5.3からすんなり移行できたらよいんだけどなぁ・・・
by cmf@ohtan管理人
ということで早速RPMを作成して自宅サーバーのPHPをアップグレード
欲しい方は下記からどうぞ~
Vine5.xで作ったRPM/SRC.RPM集
by cmf@ohtan管理人
掲題のことを実現するために、まずwebdav経由の方法を考えたのですが、自宅サーバーはcgiはsuexec、phpはsuphpにより実行権限がディレクトリのオーナー(ユーザ)権限で実行されるため、webdavは現実的ではないと判断。(webdav経由だとcommit等がapacheユーザで実行されてしまうため、権限の問題が出てしまうので・・・)
次に、ssh経由の方法を考えたのですが、これも難点があって現実的ではないと判断。
何故かというと、自宅サーバーは外部から接続する場合、ゴニョゴニョして接続元のIPを許可した後、秘密鍵を使ってログインできるようになっています。これだけならいいのですが、許可したIPは一定時間経過すると自動的に無効になるようにしてあるため、commit等を行う度に毎回ゴニョゴニョしてIPを許可して・・・なんて面倒なことをやっていられないわけです。
で、最終的に、sshでポートフォワーディングさせる方法に行き着いたわけです。
■サーバー側の準備
1.svn管理+WWW公開用のアカウントを作成(以下svnuser)
2.svnuserでパスワード無しの公開鍵と秘密鍵を作成
su - svnuser
ssh-keygen -t rsa
3.公開鍵をリネーム
cd .ssh/
mv id_rsa.pub authorized_keys
4.秘密鍵(id_rsa)をTortoisesvnを使うクライアントPCに持ってくる
5.svn管理用ディレクトリを作成
mkdir /home/svnuser/svnrepos
6.svnリポジトリを作成
svnadmin create /home/svnuser/svnrepos/hoge(任意の名称)
7.WWWのドキュメントルートが自動更新されるようpost-commitを設置
cd /home/svnuser/svnrepos/hoge/hooks
mv post-commit.tmpl post-commit
vi post-commit
-----
REPOS="$1"
REV="$2"
#commit-email.pl "$REPOS" "$REV" commit-watchers@example.org
#log-commit.py --repository "$REPOS" --revision "$REV"
/usr/bin/svn up /home/svnuser/public_html/hoge/
-----
chmod 755 post-commit
8.自動更新の対象となるWWWディレクトリを作成
mkdir /home/svnuser/public_html/hoge
9.自動更新対象のディレクトリをチェックアウト
cd /home/svnuser/public_html/hoge
svn checkout file:///home/svnuser/svnrepos/hoge ./
■クライアント側の準備
1.Puttyの公式から「putty.exe」「pageant.exe」「puttygen.exe」をダウンロードしてTortoisesvnのbinフォルダに保存
2.TortoiseSVNの設定メニューからネットワークの設定メニューを出して、SSHクライアントをTortoisePlink.exe(若しくはPuttyの公式からダウンロードしたplink.exe)を選択しておく
3.puttygen.exeを起動して「Load」をクリックしサーバーで作成した秘密鍵(id_rsa)を読み込む(Putty用にコンバートするか?聞かれるのでYesを選択)
4.3が完了したら「save private key」をクリックして適当な名前で保存
5.putty.exeを起動して下記を設定
■Session
HostName:SSHの接続先IPまたはホスト
Port:SSHの接続先ポート
Connection Type:SSH
Saved Session:任意の接続名称(例:svnssh)
■Connection>Data
Auto-Login username:SSHでログインするユーザ(例:svnuser)
■Connection>SSH>Auth
Attempt authentication using Pagent:チェックを入れる
Private key file for authentication:4で作成した秘密鍵をセット
■Connection>SSH>Tunnels
Source port:1024以上の任意のポート番号を設定(例:10022)
Destination:localhost:22(自宅サーバーから自宅サーバーのSSHに接続)
Addをクリックして保存
6.Sessionの項目に戻り「Save」をクリックして保存
7.putty.exeで続いて下記を設定
■Session
HostName:localhost(クライアントPC自身のIP)
Port:5のSource portで設定したポート番号(例:10022)
Connection Type:SSH
Saved Session:任意の接続名称(例:svntunnel)
■Connection>Data
Auto-Login username:SSHでログインするユーザ(例:svnuser)
■Connection>SSH>Auth
Attempt authentication using Pagent:チェックを入れる
Private key file for authentication:4で作成した秘密鍵をセット
Addをクリックして保存
8.Sessionの項目に戻り「Save」をクリックして保存
9.pageant.exeを起動して「Saved Sessions」から「svnssh」>「svntunnel」の順に接続する
これでTortoisesvnでcommitすると「/home/svnuser/public_html/hoge」も自動で更新されるようになるし、毎回パスワードを聞かれることもありません。
これで開発が楽になりました( ´ー`)
See Also
Subversionへポートフォワード+puttyで自動ログイン
【Subversion】mod_dav_svn(apache)経由でCommitした時に自動的にupdateを行う