@blog.justoneplanet.info

日々勉強

NP_MitasNom( of Nucleus Plugin)のバグを直そう

■結論

NP_MitasNom.phpの112行目あたり、

if(!$blogid && $itemid){
$blogid = getBlogIDFromItemID($itemid);
}


if(/*!$blogid && */$itemid){
$blogid = getBlogIDFromItemID($itemid);
}

と記述する

■結果

「常にWYSIWYGエディターを使いますか?」に対して、「はい」を選択した時、一般ユーザーの記事の追加、編集が出来なくなるバグを解消できる。

$_SERVER[‘SCRIPT_NAME’]のススメ($_SERVER[‘PHP_SELF’])

■結論

まぁ、用途によるんだが脆弱性になるから、$_SERVER[‘PHP_SELF’]はやめてなるべく$_SERVER[‘SCRIPT_NAME’]にしようよって事。

■サンプル

PHP

<?php
echo($_SERVER['SCRIPT_NAME']);
echo('<br />');
echo($_SERVER['PHP_SELF']);
?>

ブラウザのURLに以下のようにしてリクエスト

http://○○○○.com/test.php/<script>alert(document.cookie);</script>

クッキー丸見えですね。。。コレをクエリにくっつけて悪人のサイトにリダイレクトされちゃうと、悪人のサイトのアクセスログにクッキーが送られてしまうわけですな。恐

CentOSにPHPmotionをインストールしよう

PHPmotionとはオープンソース動画投稿サイト構築システム。

■前提条件

  • 「yum」が使える事。そして「ffmpeg」をインストールしている人

まだの人は前回の記事を参考にインストール!

別にyumが使えなくてもインストールはできると思いますが、すごく大変だと思います。

■前準備

「flvtool2」と「mencoder」をインストールしよう!

実行コマンド
yum --enablerepo=rpmforge install flvtool2
yum --enablerepo=rpmforge install mencoder
さらにphpSHIELDをインストール
cd /etc/php.d
cp mbstring.ini phpshield.ini
vi phpshield.ini

で以下のように変更

; Enable ffmpeg extension module
extension=phpshield.5.1.lin
/etc/rc.d/init.d/httpd reload

■PHPmotionのインストール

  1. ソースをダウンロードする
  2. 任意のディレクトリに展開
  3. setup/に直接アクセス!

あとはまぁ、流れに沿って進めてください。初期の管理ID/PASSは「admin/admin」です。

■追記

実は先日、PHPをバージョンアップしたらphpSHIELDが上手く読み込めなくなってしまいました。あれこれ迷ったあげく

; Enable ffmpeg extension module
extension=phpshield.5.1.lin

; Enable ffmpeg extension module
extension=phpshield.5.2.lin

と記述しなおしたら動くようになりました!

PHPのバージョンが5.1系なのか5.2系なのか、という事ですね。

CentOSにffmpegをインストールしよう

■インストール環境

  1. CentOS 5.2
  2. システムは64bit版
  3. rootでログオン出来る

Pleskがインストールされていたが、yumはインストールされていないマシンでした。そこで、rpmの依存パッケージ地獄から脱する為にyumをインストールする事にした。

yumのインストール

最重要注意点

Pleskでサーバを管理してる方は、インストール後に「yum update」を実行してはならない!Pleskが死んでしまいます。

必要パッケージリスト
  • yum-3.0.5-1.el5.centos.5.noarch.rpm
  • yum-metadata-parser-1.0-8.fc6.x86_64.rpm
  • python-elementtree-1.2.6-5.x86_64.rpm
  • python-urlgrabber-3.1.0-2.noarch.rpm
  • python-sqlite-1.1.7-1.2.1.x86_64.rpm
  • m2crypto-0.16-6.el5.1.x86_64.rpm
  • rpm-python-4.4.2-47.el5.x86_64.rpm
  • python-iniparse-0.2.3-4.el5.noarch.rpm(依存関係の為)
実行コマンド
rpm -ivh yum-3.0.5-1.el5.centos.5.noarch.rpm
rpm -ivh yum-metadata-parser-1.0-8.fc6.x86_64.rpm
rpm -ivh python-elementtree-1.2.6-5.x86_64.rpm
rpm -ivh python-urlgrabber-3.1.0-2.noarch.rpm
rpm -ivh python-sqlite-1.1.7-1.2.1.x86_64.rpm
rpm -ivh m2crypto-0.16-6.el5.1.x86_64.rpm
rpm -ivh rpm-python-4.4.2-47.el5.x86_64.rpm
rpm -ivh python-iniparse-0.2.3-4.el5.noarch.rpm

※上述のパッケージは既に最新でない可能性がある。

yum update yum
yum update python*
yum update m2crypto
yum update rpm-python
yum update python-iniparse
参考文献

以上で「yum」が使えるようになりました~!

■ffmpegのインストール

このままでは「yum」で「ffmpeg」がインストールできない。なので・・・

1.RPMforgeをrpmリポジトリに追加

追加する為に必要なパッケージをGET

wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

リポジトリに追加

rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

デフォルトでRPMforgeを使わないように変更

vi /etc/yum.repos.d/rpmforge.repo

で「enabled = 1」を「enabled = 0」と変更する。
今後、RPMforgeを対象に含める場合は「yum –enablerepo=rpmforge install ●●●」とする。

2.署名のインストール(一応)

wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
rpm --import RPM-GPG-KEY.dag.txt

3.ffmpegインストール実行コマンド

yum --enablerepo=rpmforge install ffmpeg
参考文献

■ffpmpeg-phpのインストール

PHPからffmpegを利用しない人は必要ない。

1.必要な環境を事前にインストール

yum install php-devel
yum install re2c
yum --enablerepo=rpmforge install ffmpeg-libpostproc
yum --enablerepo=rpmforge install ffmpeg-devel

2.ffmpeg-phpのインストール

wget http://nchc.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.5.3.1.tbz2
tar jxvf ffmpeg-php-0.5.3.1.tbz2
cd ffmpeg-php-0.5.3.1
phpize
./configure --enable-gpl --enable-libmp3lame --enable-libamr-nb --enable-libamr-wb --enable-libxvid --disable-ffplay --disable-ffserver --enable-libfaac --enable-libfaad --enable-libx264 --enable-shared --enable-nonfree
make
make install

エラー1

makeの途中でなんかエラーが出る。

/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:202: warning: implicit declaration of function 'img_convert'
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c: In function '_php_crop_frame':
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:260: warning: implicit declaration of function 'img_copy'
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c: In function '_php_resample_frame':
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:282: error: 'ImgReSampleContext' undeclared (first use in this function)
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:282: error: (Each undeclared identifier is reported only once
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:282: error: for each function it appears in.)
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:282: error: 'img_resample_ctx' undeclared (first use in this function)
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:308: warning: implicit declaration of function 'img_resample_full_init'
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:321: warning: implicit declaration of function 'img_resample'
/root/ffmpeg-php-0.5.3.1/ffmpeg_frame.c:326: warning: implicit declaration of function 'img_resample_close'
make: *** [ffmpeg_frame.lo] エラー 1
解決策
cp ffmpeg_frame.loT ffmpeg_frame.lo
参考

3.phpへモジュールを関連付ける

以下のコマンドを実行し、mbstringの設定ファイルをコピーし、ffmpeg用にする。

cd /etc/php.d
cp mbstring.ini ffmpeg.ini

但し、コピーしただけでは設定の記述が古いファイルのままなので、「vi」コマンドで内容を修正する。

vi ffmpeg.ini

以下のように記述すれば良い。

; Enable ffmpeg extension module
extension=ffmpeg.so
4.再起動
/etc/rc.d/init.d/httpd restart

エラー2

phpでなんかエラーが出る。

undefined symbol: le_ffmpeg_frame in Unknown on line 0
解決策

どうやらPHP5.3系でffmpeg-php0.5系をインストールすると不具合が発生するようなので0.6系を使用してmakeからやり直すと前述のエラー1も発生せずにインストールが成功する。

参考