2009年10月31日土曜日

phpMyAdminでのYou don't have permission to access エラー(error)

phpMyAdminをCentOSに入れようとしたんだけど、なぜかエラーになる。

http://サーバー名/phpmyadmin/」にアクセスした際、

「You don't have permission to access /phpmyadmin/ on this server.」

と表示されて、なぜか、 /var/www/phpmyadmin にだけアクセスできない。

インストールは、MySQL用GUI設定ツール導入(phpMyAdmin) (このサイトには、いつもお世話になってます)

を見て同じように設定したのだけど、うまくいかない。

1時間以上検索したり、いろいろ設定を変えたり悩んでいたら、

結局、http://www.phpmyadmin.net/home_page/downloads.php

に書いてあったが、

PHP5.1.6のバージョンが古いので(PHP5.2じゃないので)、

phpMyAdmin 2.11しかだめよということらしい。

phpMyAdmin 2.11.9.6を入れたらうまくいった。

「№3708 phpMyAdminの表示確認でエラー」

が参考になった。

しかし、やっぱり疲れるなあ。

とりあえず、古いパソコンのCentOSサーバを少し使おうとしたら、あーもう。

2009年10月28日水曜日

新サーバの選択

別件で、急にサーバを新たに一台必要になった。

クライアント用は、何台かあるが、サーバ用として、どうしたものかと昨日より調べていた。

用途にもよると思うけど、仕事場内でのWebサーバ、mysqlサーバ用として使う予定。

ということで、いろいろ調べてみて、あーもう疲れた。

最初、とりあえず、CentOSをインストールした古いパソコンでも使おうかと思ったが、

やっぱりいくらなんでも5年以上たっているので、電源が心配。仕様も古いし。

それで新しくということで、Intel ATOM のCPUを使ったマザーボード搭載のサーバにして、

省電力で稼動させようとしたが、それはそれでよいが、電源まわりや、ケースが狭いとか、

いろいろ不満がでてきて、、、、

さんざん迷ったあげくに、結局、NECの

低価格エントリーモデル Gモデル Express5800/GT110a

NEC Express5800/GT110a にした。

なんとこれが、15,000円で購入できるみたい。
サーバなのになぜにこんなにも安いのか?

SUNがつぶれそうになるのがわかるような、、、

知らなかったがネット上では、話題になっていたみたい。

来週注文する予定。

これに、もう一度、CentOSをインストールする予定。

しかし、何を買うかって疲れるねえ。

ActivePerlを使う

古いパソコンにインストールしたCentOSは、そもそも、perlのモジュールが使いたかったので、

Windowsだと、うまくいかないんではと、かってに考えていたが、

いろいろ調べているうちに、Windowsでも、ActivePerlをインストールして、

PPM(Perl Package Manager)と呼ばれる独自のパッケージマネージャを使えば、

Perlモジュールをダウンロードし、インストール・アンインストールなどが行えるので、

実際やってみると(起動:C:\usr\bin>ppm)、

なれるまで少しかったが、無事モジュールをインストールできました。

ただ、 古いパソコンにインストールしたCentOSは、いまのところ、無駄になりましたが、、、、

linux:CentOSのインストール-その2

結局、CentOS Ver5.4 ISOファイルを、3時間くらいかかってもう一台のパソコンにダウンロードした。

DVD-ROMに書き込みとチェックで、1時間くらいかかり、

その後、いよいよ、古い余っていたパソコンにインストールした。

インストール自体は、問題なく終了したが、

その後、やっぱり、apache、mysql、php、perlなどの設定がいろいろたいへんだな、

時間がかかるなということを感じてしまった。

2009年10月22日木曜日

メルマガ発行のCGIについて

メルマガ発行したいとのお客さんの要望があり、ホームページに実装できないかの依頼があった。

お客さんの要望は、

1.CGI製作者のリンクは表示できない。(広告もだめ)

2.期間が2週間くらい

3.発送数が200から500通

4.バックナンバーが見れる。

で、メルマガ発行のCGIについて、いろいろ調べた。

  1. まぐまぐでは、有料で広告表示されないが、バックナンバーを見る時は、まぐまぐのサイトになる。 
  2. 無料のCGIがたくさんあるが、リンクを外すのに、5000円から1万円くらいかかる。(1回だけ)
  3. メールが送ったけど、届かないとか、退会したけど、まだ届くとか、運用後にクレームが発生しそうだ。
  4. レンタルサーバのロリポップやさくらでは、1時間に送れるメール数に制限がある。(携帯へも)
  5. レンタルサーバでは、CGIの処理時間にも制限がある。
  6. 無料のCGIは、メール送信の時に、cronではなく、たぶんsleepで休みながら動作させているので、完了するまで、動作しっぱなしになりそうだ。 
と、ここまでも いろいろあるなあという感じですね。

linux:CentOSのインストール

やっぱり、linuxの環境が必要になったので、昨日よりlinuxの情報を集めてた。

linuxはいろいろあるが、サーバとしてCentOSが良いとのことなので、

手持ちの古いパソコンにインストールをすることにした。

まず、最新のバージョンをダウンロードしようとしたが、

最新はVer.5.4が10月19日に出たようだったが、昨日段階で、

ミラーサイトに5.3しかなく、しかたがないので、5.3を1時間くらいかけて、

ダウンロードした。

使用しているパソコンがDVD-ROM搭載だったので、


ファイルだけ、DVD-Rが書き込めるパソコンへisoファイルを移動しようとしたが、

これがなかなか難しかった。

LAN接続でのファイル転送しようとしたがうまくいかず、

USB外付けのDVD-Rへの書き込みがうまくいかず、ライターのB's Recorderシリーズを

最新しようとしたが、B's Recorderの会社が終わってた。

んじゃUSBで外付けハードディスクに移動させようとしたが、コピー途中でフリーズした。

ファイルが3.9GBで大きいのが悪いのか。

USBメモリへコピーしようとしたが、手持ちが4GBなので、大きすぎて入りませんとエラーになった。

なんだこりゃ無理だと思い、 DVD-Rが書き込めるパソコンでもう一度、isoファイルを

ダウンロードしようと思い、よく見てみたら、Ver5.4がミラーサイトに今日は上がってた。

タイミングが悪いというかびったりというか、、、

で、今もう一度ダウンロードしているが、集中しているか昨日より遅くて2時間以上かかってる。

2009年10月20日火曜日

CakePHP:メール送信について

今日はちょっと、メルマガ発行システムのCGIを考えていた。
CakePHPでメール送信をどうするかと調べていたら、
これがいいと検索で得た。

CakePHPメールコンポーネントとして送信する

を参考にした。
あと、テスト環境がWindowsXPのXamppなので、
Qdsmtp-Simple SMTP Mailer for PHP

を使い、ローカルにメール送信のソフトがなくても、
メール送信することができるようになった。

とりあえず、テスト的に1通をniftyに送信してみたら、
OKだった。

がしかし、ヤフーのフリーメルアドに送信したら、
なぜだか受信しない、、、、迷惑メールホルダにも入ってないし。
時間がないので、今日はここまででした。

2009年10月16日金曜日

CakePHP:Viewで使う共通のコード

Viewの中に、他のViewでも使用する共通のコードが発生したら、
それはエレメントとして、別ファイルにまとめた方が良いです。

マニュアルによると
「エレメントは /app/views/elements/ フォルダにあります。また、.ctp という拡張子をもちます。ビューの element メソッドを使用して出力されます。」
と説明があります。

Viewの中でこんな感じで呼び出せます。
element('helpbox'); ?>

あと、エレメントに変数も渡せるし、
スタイルシートもエレメント内で、読み込めます。

CakePHP:ログイン処理時のパスワード

ログイン処理を作っていたんだけど、
パスワードに自動的に暗号がかかってて逆に扱いが面倒というか、
どうしようかと考えていた。

暗号を外すとセキュリティ上よろしくないとは、思うんだけど、
結局、暗号しないで、コーディングしてしまった。

参考にしたのは、CakePHPのAuthコンポーネントのパスワード暗号化を無効にする
で、Authコンポーネントのパスワード暗号化を無効にする方法で、
作ってしまった。

CakePHPでのfindとreadの違い

CakePHPでDBからデータを取得する場合、
$data = $this->Model->find('all',$params);

$this->data = $this->Model->read();
というコードで、取得しますが、
このfindとreadの違いが、長らくわかってなかった。

view側で、readで取得したデータをforeachで回して、
(1件のデータだが、viewを共通にする必要があったため)
表示させようとしたが、どうも表示できなくて、
また1時間以上悩んでしまった。

なんだろと考えていたら、
findでは、複数件のデータを、
readでは、1件のデータを取得するので、
array変数内のデータの階層が違うことが判明した、、、、
ああ、なんとそういうことか、、、っていう感じ

結局、readではなくfindを使うように変更した。

やっぱり理解が乏しい部分では、問題が起きるよね。
何が辛いってこのはまりの状態で、
作業がさっぱり進まないのが辛い。
最近こういうのが多い。

2009年10月10日土曜日

CakePHPのバージョン、1.1と1.2の違い

今、CakePHPのバージョン、1.2で開発しているが、
今になって1.1と1.2のバージョンの違いが大きいことに気がついた。

1.1が1.2だからたいして違いがないかと思っていたら、
これが思いのほか大きかった。

CakePHPのサイトのマニュアルだけだと、どうもわかりづらいので、
CakePHP1.2ガイドブックの本を購入して、
勉強していた。

が、この本は、もともと1.1の時が初版で、
その内容がどうも1.2になっても1.1の時のコードや、
説明が少し残っていて、どうも混乱してしまった。
(説明はわりやすくてよいのだが)

あとWEBの情報も、2007年くらいの情報が多くて、最近のは少ない。
そうすると1.1の時の情報が多くなっている。

かなりお世話になっているので、文句を言うつもりはないけど、
これは自分も1.2の情報をどんどん増やしていかないと、
思った。

2009年10月7日水曜日

CakePHPのredirect関数でWarning

CakePHPのredirect関数を使用すると、下記のようなWarningが発生してリダイレクトしなくて悩んだ。

Cannot modify header information - headers already sent by、、、、、、、

これは、エラーではなくて、
php.iniの設定だった。
output_buffering = Off
↓変更
output_buffering = On
にして、apacheを再起動したら、普通にリダイレクトした。
参考にしたのは、ここ「cakePHP | redirect関数を使用するとWarningが発生してしまう。
ありがとうでした。

2009年10月5日月曜日

今日は、EclipseのPHP版、PDTをインストールする

だいぶ前から、PHPのエディタは、phpspotのphpエディタを使っていたが、
どうもUTF-8だと漢字が文字バケしていたので、
悩んでたが、結局 EclipseのPHP版、PDTをインストールすることにした。

がしかし、Eclipseについていろいろ検索してみると、
EclipseのPHP版、PDTがよいらしくただインストール関係の情報が
2007年くらいのものが多く、
最新版の2.1のインストール情報があまりないようでした。

結局どこからなにをダウンロードしたらよいか、迷いながら、
PDTのサイトにある
PDT 2.1 All In Ones / Eclipse PHP Package
All-In-One Windows 32-bit

をダウンロードして適当なディレクトリにおいてインストールした。
日本語化は、
eclipse日本語化の参考情報を参考に

eclipseの日本語化からPleiades 本体1.3を

ダウンロードした。

週末にCakePHPで、コントローラ内のconditionsで悩んだ

CakePHPで、コントローラ内のfindの第二パラメータに渡す
検索条件のconditionsを指定したんだけど、
実行してみるとまったく条件がきいてなく、
1時間悩んだ。
おかしいなあと思ってよく見たら、、、、、
conditionsがcondtionsになっていた^^;
いろいろやっている時、どこかのサイトの掲載されていたコードを
コピペした中にこのiが抜けているconditionsが紛れ込んでいた、、、
今度からコピペする時は、気をつけよう!

                $param = array(
                    'conditions' => array('Bbsdata.id_child =' => $id),
                    'order' => array("Bbsdata.id_created"=>"desc")
                );
                $data = $this->Bbsdata->find('all',$param);

2009年10月3日土曜日

昨日は、CakephpのRouting.adminで悩む

core.phpのConfigure::write('Routing.admin', 'admin');
を有効にして、
http://site.com/admin/controller/index
とかでアクセスできるようにしようとした。

一つのcontrollerで、ログイン後のadmin Routingでアクセスするfunctionと、
ログインしないfunctionが混在させたかったので、どうするのかわからず、
検索してもあまりadminを使っている人がいないようで、2,3時間また悩んだ。

結果、app_controller.phpのfunction beforeFilter()内に、その振り分けをさせて
解決した。ただこれでよいかどうかはわからない。

と、この日、ログイン処理のコーディングで悩んでいたが、
後日、このやり方は古いのが判明した。

この時、CakePHP1.2ガイドブックの本を参考に、
ユーザ管理やログイン処理を作ろうしていた。

がしかし、$needAuthを使いログインを振り分けるという、
書いてある内容がどうも1.1の時のコードらしく、
やり方が古いのが判明。(動作しないわけではないが)
1.2では、$this->Auth->allow('XXXX');
とする方法が正解らしい。

どうも振り回されているような気が、、、、

2009年10月2日金曜日

とりあえず今作っているcgi

先月から、Cakephp 1.2 のガイドブックを購入して、
9月からCakephpのお勉強を始めました。

今、cgiを作ろうとしていて、


環境としては、
PHP5+Cakephp1.2+mysql5。

とりあえず今、掲示板のcgiを勉強をかねて作っています。

CakePHPで、使用できるのはsqlite2になる

CakePHP1.2でsqliteを使おうとして、DBとテーブルを作り、
CakePHPの方で、database.phpを修正して、アクセスしても、
データベースに接続できなくて2,3時間悩んでいた。

検索してみるとどうもsqliteは、2と3があり、当然3の方が良いが、
CakePHPで、使用できるのはsqlite2のようです。

それにsqliteは、2と3で互換性がないみたい。
あと、SQLiteManager(firefoxのアドオンとWEBソフトの2つある) というmysqlでいうところのphpmyadminみたいのがあるが、それがどうも使いづらい。

めんどいので、とりあえず、DBはmysqlで作り、完成後sqlite2でも動くようにすることにした。

あと
php4では、sqlite2
php5では、sqlite3
となる。
今現在、まだphp4は、レンタルサーバでは現役なのだろうか?