新しく契約した サーバにLAMP環境を構築しようとしたときに、
phpの動作確認用に、すごく簡単なスクリプトを置いたのですが、
HTTP エラー 500(Internal Server Error): になってしまって、
一瞬PHPのインストールが失敗したのかと思ってしまいました。
ちなみにPHPのバージョンは5.3。
<?php $d = new DateTime(); echo $d->format( 'Y/m/d H:i:s' );
新しく契約した サーバにLAMP環境を構築しようとしたときに、
phpの動作確認用に、すごく簡単なスクリプトを置いたのですが、
HTTP エラー 500(Internal Server Error): になってしまって、
一瞬PHPのインストールが失敗したのかと思ってしまいました。
ちなみにPHPのバージョンは5.3。
<?php $d = new DateTime(); echo $d->format( 'Y/m/d H:i:s' );
Movable TypeでMySQL4からMySQL5に切り替えたら文字化けしました。
ちなみにMovable Typeのバージョンは4.13です。
マニュアルにはMySQL5.xも対応と書いてあります。
いろいろ探してみると、文字化けを解消するには、
設定ファイルの mt-config.cgi に以下のように文字コード指定を追加すればいいらしい。
#======== DATABASE SETTINGS ========== ObjectDriver DBI::mysql Database dbname DBUser dbuser DBPassword dbpassword DBHost localhost # 以下の2行を追加 SQLSetNames 1 PublishCharset utf8
これで文字化け解消!
助かった~
via: http://www.movabletype.jp/documentation/mt4/system_requirements.html
via: http://www.infinity-dimensions.com/blog/archives/movabletypemysql5.html
CentOS5.4を日本語化します。
# vi /etc/sysconfig/i18n
#LANG="C" LANG="ja_JP.UTF-8" SYSFONT="latarcyrheb-sun16"
あとはログインしなおせば日本語化されているはずです。
よく忘れるのでメモ。
[root@localhost ssh]# cat /etc/redhat-release CentOS release 5.4 (Final)
ちなみにDebianの場合はこちら
ファイルを探すときに便利なlocateですが、通常は定期的にDBが更新され、検索したファイルが表示されます。
こんな感じ。
# locate php.ini /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.ucf-dist /etc/php5/cli/php.ini /usr/share/doc/php5-common/examples/php.ini-dist /usr/share/doc/php5-common/examples/php.ini-paranoid /usr/share/doc/php5-common/examples/php.ini-recommended /usr/share/php5/php.ini-dist /usr/share/php5/php.ini-dist.cli
もし、locateが入ってなかったら以下のコマンドでインストール。
# aptitude install locate
でも、パッケージをインストールした際など、すぐにlocateでファイルを見つけたくなるときが多々あります。
そんな時はDBを手動で更新!
# /usr/bin/updatedb
便利だー
※ 「PECL-PerlでPHPからPerlを実行」の続きです。
PHPからPerlのGD::Barcode::NW7を使ってバーコードを生成してみます。
まずはファイルを作って・・
# vi nw7.php
中身はこれ。
<?php
/**
* PECL-Perl sample
*/
$param = date('YmdHis');
// バーコード生成モジュールの呼び出し
$perl = new Perl();
$perl->eval( 'use GD::Barcode::NW7' );
$perl->eval( 'binmode STDOUT;' );
$output = $perl->eval( 'GD::Barcode::NW7->new( "' . $param . '" )->plot->png' );
// ファイルに出力
$fp = fopen( 'nw7.png' , 'w' );
fwrite( $fp , $output );
fclose( $fp );
?>
コンソールから実行!!
# php nw7.php
生成されたバーコードはこれ。
うまくいきました~
PECL-Perlを使うと、PHPからPerlを実行できるようです。
今回はDebianなのでaptitude。
# aptitude install php-pear
# pecl install perl Package "perl" Version "1.0.0" does not have REST xml available Cannot initialize 'perl', invalid or missing package file Package "perl" is not valid install failed #
あらら失敗。
いろいろ調べましたが、こうなってしまうとソースからコンパイルしないといけないみたい。
コンパイル時にphpizeが必要なのでphp5-devをインストールする。
# aptitude install php5-dev
ちなみにCentOSやRedHatなどの場合は
# yum install php5-devel
準備OK!
それではソースからコンパイル!
# wget http://pecl.php.net/get/perl-1.0.0.tgz # tar -xvzf perl-1.0.0.tgz # cd perl-1.0.0 # phpize # ./configure --prefix=/usr
ここで、WARNINGが出た。
checking for re2c... no configure: WARNING: You will need re2c 0.9.11 or later if you want to regenerate PHP parsers.
re2c が必要みたい。
# aptitude install re2c
もう一度、コンパイルのやり直し
# wget http://pecl.php.net/get/perl-1.0.0.tgz # tar -xvzf perl-1.0.0.tgz # cd perl-1.0.0 # phpize # ./configure --prefix=/usr # make # make install
で、Apacheを再起動。
# /etc/init.d/apache2 restart
これでOKかなと思った矢先、こんなWarningが出てた。
# php -v PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20060613+lfs/perl.so' - /usr/lib/php5/20060613+lfs/perl.so: cannot open shared object f ile: No such file or directory in Unknown on line 0 PHP 5.2.0-8+etch16 (cli) (built: Nov 24 2009 11:14:47) Copyright (c) 1997-2006 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies #
よくよくconfigureの結果を見てみると
checking for perl support... yes, shared Note (probably harmless): No library found for -lperl
むむむ。これかなぁ・・?
いろいろ調べてlibperl-devが必要らしいので入れてみる。
# aptitude install libperl-dev
そしておもむろに再起動。
# /etc/init.d/apache2 restart
こんどはうまくいったみたい。
ここを参考に、まずはphpファイルを作成。
vi test01.php
中身はこれ。
<?php
print "Hello from PHP!\n"; // PHPから出力
$perl = new Perl(); // Perlをオブジェクト化
$perl->require("test01.pl"); // Perlのファイルを読み込んでEval
print "Bye\n";
?>
次にperlファイルを作成。
vi test01.pl
中身はこれ。
#!/usr/bin/perl print "Hello World from Perl!!!\n"
そして実行!!
# php test01.php Hello from PHP! Hello World from Perl!!! Bye
やったー。なんとか出来ました><
via: http://d.hatena.ne.jp/tageo/20100323/1269328888
via: http://d.hatena.ne.jp/kazukichop/20061120
via: http://www.linuxquestions.org/questions/debian-26/cant-compile-xchat-on-debian-sarge-perl-problem-259654/
apt-getの便利バージョンのaptitudeを入れてみます。
aptitudeはapt-getのinstallとupdateを一気にやってくれて、依存関係の解消も少し向上しているそうですね。
インストールはapt-getで出来ました。
# apt-get install aptitude パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています... 完了 以下の特別パッケージがインストールされます: libsigc++-2.0-0c2a 提案パッケージ: tasksel debtags 推奨パッケージ: aptitude-doc-en aptitude-doc libparse-debianchangelog-perl 以下のパッケージが新たにインストールされます: aptitude libsigc++-2.0-0c2a アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 58 個。 2906kB のアーカイブを取得する必要があります。 展開後に追加で 8659kB のディスク容量が消費されます。 続行しますか [Y/n]? Y 取得:1 http://ftp.debian.org etch/main libsigc++-2.0-0c2a 2.0.17-2 [33.3kB] 取得:2 http://ftp.debian.org etch/main aptitude 0.4.4-4 [2873kB] 2906kB を 9s で取得しました (318kB/s) 未選択パッケージ libsigc++-2.0-0c2a を選択しています。 (データベースを読み込んでいます ... 現在 14654 個のファイルとディレクトリがインストールされています。) (.../libsigc++-2.0-0c2a_2.0.17-2_i386.deb から) libsigc++-2.0-0c2a を展開しています... 未選択パッケージ aptitude を選択しています。 (.../aptitude_0.4.4-4_i386.deb から) aptitude を展開しています... libsigc++-2.0-0c2a (2.0.17-2) を設定しています ... aptitude (0.4.4-4) を設定しています ... #
via: apt-getとaptitudeの違い
Debian の場合、OSのバージョンはファイルに記述してあるだけなので、
lessなどで確認する事が出来るようです。
# less /etc/debian_version 4.0
4.0ということはetchですね~