11月 29

phpMyAdminでエラーはないがログインできない現象について


前回の記事でapacheのphp.iniのパスを変更したところ、今度はphpMyAdminにログインできなくなった。

ログインしてもなんども同じログイン画面にリダイレクトされてくる。
しかも、エラーログ等にまったく出てないので意味がわからない。
php.iniの読み込みを外すとログインできるので、ID・PASSなどのmysqlの設定ではなさそうだ。

んで、アクセスログをよく見ると毎回セッションIDが違うことに気づく・・・
なるほど、セッションが繋がれていないのね。
php.iniのセッションを見直す。

session.save_path = "/var/lib/php/session"

phpはrootユーザーでインストールして、apacheのユーザーはrootユーザーでもないし、グループも違うのでここには書き込めないはず。
権限を変更。

chmod 777 /var/lib/php/session

無事セッションが繋がり解決しました。
セッションを保存するパスを変更するのもありだと思います。
phpMyAdminだけの問題ではないですね。

あーエラーばっか・・・・

written by YSU \\ tags: , ,

11月 29

コマンドラインからphpを実行したときのphp.iniのパス

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

apacheからphpを実行したときのphp.iniのパス。

Configuration File (php.ini) Path => /usr/local/bin/php/lib
Loaded Configuration File => (none)

となっているので、いくらphp.iniを修正しても読み込まれない現象が起きていた。
apacheのphp.iniのパスを変えたかったがどうにも変えられない。

しかたないので今日もシンボリックリンクで逃げる。

ln -s /etc/php.ini /usr/local/bin/php/lib/.

無事解決。
apacheの再起動も忘れずに。

written by YSU \\ tags: ,

11月 29

phpを再コンパイルしてたら以下のエラーがでた。

/usr/bin/ld: cannot find -lltdl

追加したオプションでなにかひっかかったのか?
ググッてみたら以下でよいとのこと

yum install libtool-ltdl libtool-ltdl-devel

解決に結構時間がかかったので、残しておく。

written by YSU \\ tags: ,

11月 29

propel.iniでmysqlを使用することを記述し

symfony propel-build-schema

って打ったら

[propel-schema-reverse]there was an error building XML from metadata:could not find driver

と出てきた。
かなり悩んだ。困っている人もいると思うので解決方法を残しておく。

まず、ここでいうdriverというのはPDO(PHP Data Objects)のこと。
phpでmysqlに接続しにいくdriverってことですね。windowsのodbcみたいなものかー
なので、phpにpdoとpdo_mysqlっていうライブラリが無いと動かない。

peclで簡単にインストールできる。
まずpdo

pecl install pdo

そして、pdo_mysql

pecl install pdo_mysql

この2つのインストールがエラーで落ちることもあるが、ググッってがんばる。
たいていyumでインストールすれば治る系ばかり。

インストールしたらphp.iniに

extension=pdo.so
extension=pdo_mysql.so

の2行を足す。
かならず、↑の順番で書かないといけない。
(私は、順番がだめということに気づかず2時間以上も悩んだ・・・)

さて、ここまで来たらいけるかとおもいきや、

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

ソケットがないだと!?pdo_mysqlのソケットの指定が「/var/lib/mysql/mysql.sock」になっている。
なんとかこのソケットの向き先を本来の向き先に変えたいのだが方法が見つからない・・・
仕方なくシンボリックリンクで逃げることに。

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

ようやく実行

symfony propel-build-schema

いけました。これでやっと開発できる。

written by YSU \\ tags: ,

11月 28

symfonyのインストールが完了したので、
symfonyをつかってHello! World!を出力するまで行う。
symfonyのインストールはコチラを参照。

また、apacheのmod_rewriteというモジュールが必要です。
無い人はインストールしておきましょう。

今回はhelloというプロジェクトを開発し、Hello! World!を出力するアプリケーションを作成します。

まずは、プロジェクトを作ります。
どこでもよいので、プロジェクト用のディレクトリを作成。移動。
ここでは/project/helloがsymfonyコマンドを打つ基本のディレクトリになります。

mkdir /project/hello
cd /project/hello

次に、symfonyのプロジェクトを初期化する。
*symfonyコマンドが打てないならsymfonyにパスを通しておいてください。

symfony init-project hello

次に、アプリケーションを作成する。
今回はhello! world!というプログラムを公開するアプリケーションなので「front」というアプリケーションを作ります。
もし、このプロジェクトを管理する管理画面等を作る場合は、「back」といったアプリケーションを作ります。

 symfony init-app front

さて、ここまできたら/project/hello/web配下にindex.phpというコントローラーが配置されます。
実際にwebでアクセスした際に起動する実行ファイルはこのindex.phpになります。
なので、ここを実行するようにapacheの設定を行います。
例えば、hello.morinoyume.comというドメインなら以下のようになります。
(*hello.morinoyume.comはありませんよ)
ドキュメントルート、DirectlyIndex、Alias /sf...がミソです。
Alias /sfは自分がsymfonyをインストールしたディレクトリのsfを指定してあげましょう!

<VirtualHost *>
    ServerName hello.morinoyume.com
    DocumentRoot /project/hello/web
    ErrorLog logs/hello_error_log
    CustomLog logs/hello_access_log combined

    #php
    AddType application/x-httpd-php .php .phtml
    AddType application/x-httpd-php-source .phps

    #directry index
    DirectoryIndex index.php

    Alias /sf /usr/local/php/PEAR/data/symfony/web/sf

    <Directory />
      Order Deny,Allow
      Deny from all
      Allow from all
    </Directory>

   <Directory />
     Options All
     AllowOverride All
   </Directory>

</VirtualHost>

この時点で、http://hello.morinoyume.com/にアクセスして、

symfony

「Symfony Project Created」という画面になれば、symfonyのセッティング完了です。
index.phpにアクセスできたにも関わらず、上記のような綺麗な画面にならなければ、「/sf」のAliasの設定が間違っています。
もし、index.phpにアクセスできないようなら、apacheの設定ミスです。

さて、プロジェクトができたら、いよいよモジュールを開発しましょう。
今回はfrontアプリケーションにindexというモジュールを作成して、hello!worldを出力するモジュールを作ります。
もし、Hello!Worldアプリケーションのアカウント登録のインターフェイスを作るなら「account」モジュールなどモジュールを分けてあげましょう。

symfony init-module front index

これで、indexモジュールができました。
/project/hello/apps/front/modules/ 配下にindexモジュールができていることがわかると思います。
次はテンプレートにHello! World!を書きましょう。

vi /project/hello/apps/front/modules/index/templates/indexSuccess.php

に「Hello!World!」と書いてください。

次は、アクション(プログラム)にこのテンプレートを出力するように

  public function executeIndex(sfWebRequest $request)
  {
    return sfView::SUCCESS;
  }

と書きましょう。
これで、完了です。
http://hello.morinoyume.com/index
にアクセスしてみてください。
「Hello!World!」という文字が表示されたら成功です!

だらだらと長くなってしまった・・・
わかりにくい投稿になってしまいましたね・・・。

written by YSU \\ tags: ,

11月 28

さて、今日は天気良すぎて外にでかけたいけど、
仕事で疲れてるのもあるし、家でサーバーをいじることに。

今日はsymfonyのインストールから簡単なアプリケーションまで作りたいなー
ってことでまずはsymfonyのインストール(php,pearのインストール済が前提)

まずはpearのアップグレード

>pear upgrade PEAR

symfonyのチャンネル追加

>pear channel-discover pear.symfony-project.com

インストールするバージョンの確認。

>pear remote-list -c symfony
CHANNEL SYMFONY AVAILABLE PACKAGES:
===================================
PACKAGE VERSION
pake    1.1.4
symfony 1.2.9

symfony1.2.9。最新のstableバージョン。
もうすぐ1.4になるらしい・・・。とりあえず今回は1.2.9で。
symfonyのインストール。

>pear install symfony/symfony

むっ!エラーが

symfony/symfony requires PHP extension "dom"

よくわからないけど↓で解決

>yum install php-xml

再度、インストール

>pear install symfony/symfony

無事インストールできたみたい。
バージョンの確認。

>symfony -V
symfony version 1.2.9 (/usr/local/php/PEAR/symfony)

では、symfonyをつかった記事は次回以降で。
1.2からO/RマッパーとしてDoctrineが使える。
気になるなー。

written by YSU \\ tags: ,

11月 28

ふと、シェルを調べてみたら

echo $SHELL
/bin/bash

defaultのbashだった。
bashじゃなんとなく嫌なので会社と同じtcshに変更しようとおもう。
(こういうのって本当はもっと早くやるべきなんでしょうね)

普通にシェルを変更しようと

 chsh -s /bin/tcsh
morinoyumeのシェルを変更します。
chsh: "/bin/tcsh" は存在しません。

tcshって標準で入っていないことが判明!
会社では普通に使っていたからデフォルトで入っているかとおもった。
インストール方法を調べるもこういう超基本的な導入系って中々でてこない・・・
とりあえずyumでコマンド打ってみる。

yum -y install tcsh

お、インストールできたっぽい!
簡単だね。

あとはログイン時のシェルも書き換えたいので、

chsh
morinoyumeのシェルを変更します。
新しいシェル [/bin/bash]: /bin/tcsh
シェルを変更しました。

これでログインしなおせばOK!
あとは自分の好き放題に/home/morinoyume/.cshrc
を修正すればOK!

やっぱ使い慣れているシェルがいいですね♪

written by YSU \\ tags: ,

11月 06

調べると意外と無いのでメモ程度に残しておく。
yumで簡単にインストールできる。

yum -y install perl-CPAN

written by YSU \\ tags: