PHPSocial 「Wrong license number」対処メモ

オープンソースのSNSシステム、PHPSocialのインストールに関する簡易メモ。
Open Source PHP Social Networking Software | PHPsocial.net
http://phpsocial.net/

PHPSocialはインストール時に、ライセンスキーを入力する必要があります。
オープンソースで利用も無料だけどアカウント登録をしないとライセンスは出せませんよ、的な。

サインアップしてから「Account」をクリックして、「Generate License」をクリック。
そこでライセンスを生成。

ちゃんとしたライセンスを入力してもエラーが出る場合は
「./include/license」に書き込み権限がちゃんとついているか確認する。

その次は、「下のボタンをクリックしてください(英語)」と表示されているにも関わらずボタンが表示されてない現象が。
ワロス。

「./include/Config.php」の書き込み権限がついているか確認。
書き込み権限をつけてやり直すと、「Connection Successful」の文字と共に新たなボタンが出現。

あとはスルスルと終了。

まぁ、自分用のメモなので殴り書きです。

PHPモジュール版からCGI版へ切り替え

手持ちのサーバにApache入れるとだいたいPHPはモジュール版です。
レンタルサーバではセキュリティ上の理由からCGI版だったり、モジュール版とCGI版とを選択できたり。

おおまかな違いは

perlやPHPについて、CGI方式とモジュール方式の比較
http://oshiete.goo.ne.jp/qa/4155506.html

より

モジュール:
スピードが速い(起動終了処理が不要)
メモリ使用量が多い(アクセスしていなくてもメモリが解放されない)
rootやapache権限で実行される

CGI:
スピードが遅い(起動終了処理が必要)
メモリ使用量が少ない(アクセスがなければメモリを使用しない)
どんな言語でも作成できる
SuExecを使用できる(ユーザー権限で実行できる)

くらいの認識でOKかと。

んで、あんまり使う機会は無いかもですが一応モジュール版からCGI版への切り替え方法をメモ。
 

続きを読む

CentOS5.7でPHP5.2へアップデートしようとしたら「Error Summary」と出た

タイトル通り、CentOS5.7の環境でutterのリポジトリでPHPを5.1から5.2へアップデートさせようとしたら、「Error Summary」とかいろいろ出たので、調べてみたらPHP5.1から5.3へアップデートさせる記事を発見。

やってみたらうまくいったのでメモメモ。

CentOS5.7へPHP5.3.3のインストール
http://www.netrail.info/?p=1033

上記ページにあるように、
#ひとまず通常のphp関連のものを削除
yum remove php-*

#php53とつくものをインストール
yum install php53 php53-mbstring php53-common php53-gd ↓
php53-pdo php53-mysql php53-pgsql php53-cli

とやってApacheを再起動するだけでOKでした。
こちらとしてはJSON関数が使えるのなら、PHP5.2でも5.3でもどちらでも良いんよ(・ω・`)

んで、eAcceleratorはphp53-develを入れた後、ソースで直接インストールして終了。

画像の有無のチェックやリダイレクト先の取得に使えるget_headers関数

最近、get_headersという関数を知りました。
文字通りヘッダ情報を取得する為の関数です。
PHP5で使える関数です。

これを使えば、例えば
相互リンク先のURLが404エラーになっていないか、
指定されたURLのファイルがあるかないか、
またリダイレクトの飛び先の情報などの取得が簡単にできるわけですな。

以下、PHPマニュアルより引用

ソース:
<?php
$url = 'http://www.example.com';
print_r(get_headers($url));
?>

結果:
Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Date: Sat, 29 May 2004 12:28:13 GMT
    [2] => Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
    [4] => ETag: "3f80f-1b6-3e1cb03b"
    [5] => Accept-Ranges: bytes
    [6] => Content-Length: 438
    [7] => Connection: close
    [8] => Content-Type: text/html
)

リダイレクトの場合は”Location: 〜”というのが含まれるのでそれを調べればいいわけですね。
もっと早くに知っておきたかった。

PHP: get_headers – Manual
http://php.net/manual/en/function.get-headers.php

selectタグで都道府県

ユーザ登録やイベント登録のフォームを度々作ることがあるのですが、毎回

『47都道府県の名称をチマチマ入れる作業はもう嫌だお。。。(;ω; )』

といい加減に思うようになってきたので、コピペできるようにメモ(PHP用)。

続きを読む

PHPでFizzBuss問題を再帰的に解く

PCのファイル整理をしていたらtest.phpっていうのがあって中身を見てみたらFizzBuzz問題の解法コード。
FizzBuzzを初めて知った時に自分ならどうするかって考えて書いたことあったなぁと思い出しました。

ちなみに「FizzBuzz」とは

1から100まで順番に数えてもらうとする。
その時、3で割り切れる数字は「Fizz」、5で割り切れる数字なら「Buzz」、両方で割り切れる場合は「FizzBuzz」、それ以外ならそのまま数字を言う。

という遊びのことで、このアルゴリズムをプログラムで作れというのが「FizzBuzz問題」です。
世界のナベアツの「3の倍数だけアホになる」と同じジャンルの遊びですね。

プログラマ志望の人に入社試験でこの問題を解かせてみると意外とできない人が多かったということで少し話題になったやつです。
たしかアメリカの話だったような気がします。

アルゴリズムとしては非常に簡単ですが、入社試験というプレッシャーのかかる環境で、しかも制限時間が5分くらい(でしたっけ?)でプログラムを書けと言われると私もパニックになるだろうなぁと思います。

せっかく出てきたので、そのtest.phpの中身をそのままペタッとコピペ。

<?php
function FizzBuzz($i = 0) {
  if ( ++$i > 100 ) return;
  if ( $i%3 == 0 ) echo("Fizz");
  if ( $i%5 == 0 ) echo("Buzz");
  if ( $i%3 != 0 && $i%5 != 0 ) echo($i);
  echo "<br />";
  return FizzBuzz($i);
}
FizzBuzz();
?>

yumでPHP5.1からPHP5.2へアップデート

PHPが5.2以上で無いと動作しないっぽいわがままな子猫ちゃんプログラムの為にPHPをアップデートした際のメモ。

環境はCentOS5.5。
このOSをインストールした時点でのPHPのバージョンは5.1.6でした。
デフォルトのリポジトリではPHPをyumでアップデートしても5.2までいかないみたい。

下記リンクを参考に作業。

つれづれなる備忘録 : CentOS5.2にPHP5.2をYumでインストール
http://blog.livedoor.jp/kuroranger/archives/65182380.html

というかやってることはほとんど同じです。

#新規にファイル作成
vi /etc/yum.repos.d/utter.repo
--------------------------
[utter]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0 ← ここは0にしておくのが無難
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
--------------------------

# PHPのアップの時だけリポジトリに[utter]を指定
yum --enablerepo=utter update php* -y

これでPHPが5.2.16にアップデートされました。

eAcceleratorで設定が変わらないと思ったら

今のサーバにeAcceleratorを入れていたハズと思っていたら入っていなかったので、改めて下記を参考にさくっとインストール。
CentOSにyumでeAcceleratorをインストールする – toytools log : kaw

eAcceleratorとは、PHPで一度行った処理をコンパクトにまとめて、次回同じ処理が行われた際にはそれをさっと呼び出すことによって処理の高速化を図るというツールです。

仮面ライダーで例えるとPHPがアクセルでeAcceleratorがトライアルメモリなようなもんです。
うん、分かりにくいな(・д・´)。

で、とりあえずインストールが済んだ後に細かい設定をしようとググッてみると、上位に出てくるサイトのほとんどがeAcceleratorの設定を「/etc/php.ini」内で行っているのがちょっと気になったわけです。

もし「/etc/php.ini」内で設定してからphpinfo()などで値を見たときに設定が変わってないー!、なんてことがあった場合は「/etc/php.d/eAccelerator.ini」をチェックした方がいいかも。
eAccelerator.iniの中に書かれている内容で設定が上書きされている可能性があります。

そういうわけで「eAccelerator 設定 変わらない」の検索で
引っかかりやすそうなタイトルにしてみました♪〜(´ε`)

配列の各要素を個別に変数へインポートする(PHP)

連想配列の各要素を個別の変数にするのに今までは、

foreach( $arr as $key => $value ) { $$key = $value; }

でやってたけど、

extract( $arr );

でできたのね・・・。
どっちも1行だからあまり変わらないけど、後者の方はスマートっぽく見える。(゜д゜

ただ、PHP: extract – Manualにも

extract() をユーザー入力 ($_GET や $_FILES など) のような信頼できないデータについて使用しないでください。 もし行う場合、例えば register_globals を信頼しているような古いコードを一時的に実行したい場合、 EXTR_SKIP のような extract_type の値が上書きされていないことを確認してください。そして php.ini の variables_order で定義されたものと同じ順で展開すべきであることに留意してください。

と書いてあるように$_GETや$_POSTで使うのは、ちょっと怖ひ。

極端な例を挙げるとすると、下記のような身長と体重の数値を送ってBMI値を計算する処理を作ったとしても

hoge.php?bmi=30

$weight = $_POST['weight'];
$height = $_POST['height'];

// BMI値 = 体重[Kg] ÷ (身長[m]×身長[m])
$bmi = $weight / ( $height * $height );

extract( $_GET ); // ここで$bmi=30となる!

if ( $bmi > 22 ) {
echo "デブ!";
}
「?bmi=30」とアクセスされたら、身長・体重にかかわらずあなたは常に「デブ!」である。

こんな風にユーザが変数の値を任意に操作することが可能になるので、常にデブと言われるだけならまだしも、SQL文や処理の大事なフラグも変更される恐れがありセキュリティ上好ましくない。

まぁ、使いどころに気をつけましょうというお話。