Category: ‘php’

sfMelodyPluginを試す その1

2011年7月2日 Posted by PURGE

※注意 この記事は現在調査を進めながら記述していますので、完全な情報ではありません。

Symfony1.4 で連携しようと思ってたどり着いた sfMelodyPlugin
Symfony1.4 の使用方法も間々ならないままにplugins/sfMelodyPlugin ディレクトリにインストール。中にある英語のREADME.txt を読んでみる。
一般的には下記のコマンドでインストールできるようだが、PEARが効かない環境なので一式配置。

$ php symfony plugin:install sfMelodyPlugin

キャッシュをクリアして、

$ php symfony cc

sfMelody を settings.yml に設定する。
ちなみに、Doctrine使用の場合、sfDoctrineOAuthPlugin sfDoctrineGuardPlugin が必要らしい。
sfMelody と同様に pluginsディレクトリに配置した。

all:
  .settings:
    enabled_modules: [default, sfGuardAuth, sfMelody]

適用するアプリケーションにあるmyUser.class.php の継承元を変更する。
apps/my-app/lib/myUser.class.php:

  class myUser extends sfMelodyUser
  //class myUser extends sfBasicSecurityUser
  {
  }

app.yml を設定する。

all:
  melody:
    create_user: false            # 対象サービス(twitter等)に接続した時にログオンできない場合新規作成するかどうか
    redirect_register: false      # 登録画面にリダイレクトするかどうか
    twitter:                      #name
      key:  my_service_key        # twitter で発行されたコンシューマー・キー(API key)を記述
      secret: my_secret_key       # twitter で発行されたコンシューマー・シークレットを記述
      callback: @mymodule_index   # コールバックURLを記述

      #オプション (↓↓↓↓↓調査中↓↓↓↓↓↓)
      user:                       # to create an user
        field_1:
          call: xx
          call_parameters: [x, x, x]
          path: xx.xy.zz
          prefix: xx_
          suffix: _xx
          key: false
        ...

      provider: twitter          #対象サービス名 (他google / facebook等)
      request_token_url: https://api.twitter.com/oauth/request_token  # リクエスト・トークンURL
      request_auth_url: https://api.twitter.com/oauth/authorize #URLを許可する
      access_token_url: https://api.twitter.com/oauth/access_token  #アクセス・トークンURL

      # (↓↓↓↓↓調査中↓↓↓↓↓↓)
      namespaces:                 # namespaces are used to make some api calls - see namespace Section
        ns1: http://my.name.space
        ...
      aliases:                    # Alias is an easy way to simplify api calls
        me: my/alias
        ...
      auth_parameters:
        param1: value
      call_parameters:
        param1: value
      access_parameters:
        param1: value
      output_format: json
      create_user: true
      redirect_register: false

      #optional only for OAuth 1
      request_parameters:
        param1: value
      request_token_url: https://api.twitter.com/oauth/request_token  # リクエスト・トークンURL

まだ何もわからないまま、アプリケーションを実行してみる。呼び出すべき actions.class に接続のアクションメソッド(executeIndex)とCallbackを受けるアクションメソッド(executeShow)を記述。

  public function executeIndex(sfWebRequest $request)
  {
  	$this->getUser()->connect('twitter');  //nameで指定した名前
  }
  public function executeShow(sfWebRequest $request)
  {
  	$this->me = $this->getUser()->getMelody('twitter')->getMe();
  }

それに伴いrouting.yml も設定する。

twitter_callback:
  url:   /:module
  param: { action: show }

すると、何やら sfOAuth1 が見つからないとのエラー。実際のファイルが sfDoctrineOAuthPlugin に無いのかなと予測したらやはり無い。どうやら OAuthBase のモジュールが別途必要なようだ。急いでダウンロードしたらこのエラーは無くなった。

しかし次のエラー

Fatal error: Call to undefined function curl_init()

どうやらphpにて、cURLが有効になっていない模様。
php.ini で同モジュールを有効にしてApacheの再起動したらtwitterページにリダイレクトできました。

エラー画面なので連携とまではいけませんでした。
まだまだ、完全な連携には程遠いのですがちょっと感動です。

続きは後日・・・。

■参考サイト
Symfohub

symfonyコマンド

2011年6月22日 Posted by PURGE

■schema.yml からのデータベース生成

$ php symfony doctrine:build-db 

■schema.yml からのモデルクラス生成

$ php symfony doctrine:build-model 

■schema.yml からのオブジェクト生成

$ php symfony doctrine:build --all 

■フィクスチャファイルのデータロード

$ php symfony doctrine:data-load 

/var/mysql/mysql.sock 見つからないエラー

2011年6月16日 Posted by PURGE

phpでPDOを使用するときに出たエラー。

Warning: PDO::__construct(): [2002] No such file or directory 
(trying to connect via unix:///var/mysql/mysql.sock) 
in /Users/xxxx/・・・/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470

読んでの如く、パスに mysql.sock が無いというエラー。

php.ini の設定だろうという事で下記のように変更。
MySQLのインストールは自分で行った為、下記のパスに存在していた。
わからない場合は、my.cnf にmysql.sockのロケーションが設定されているようだ。

;pdo_mysql.default_socket=/var/mysql/mysql.sock
    ↓
pdo_mysql.default_socket=/tmp/mysql.sock

php.ini を変更したので、Webサーバを再起動して解決。

DBからschema.ymlを作成する

2011年6月4日 Posted by PURGE

過去、開発においてテーブル定義はER図によって管理してきた。下記がこれまでの開発ワークフローとなる。

ER図作成
 ↓
CREATE文( SQL)生成
 ↓
テーブルスキーマ生成

よって実テーブルから、 schema.yml を生成したい。

そこでまず、databases.yml にてDB接続設定を行う。
設定が正しく行われた場合 doctrine:build-schema コマンドを呼び出す。

$ php symfony doctrine:build-schema

これによって、schema.yml ファイルは config/doctrine/ ディレクトリの中に生成される。これを元に modelクラス をビルドすることとなる。

php5.3とMySQL5.5 のインストール

2011年6月1日 Posted by PURGE

CentOS 5.5 に最新(2011/05時点)のphp5.3とMySQL5.5をインストールする方法を下記に記す。
yumリポジトリの追加をOSアーキテクチャに合わせないと、ライブラリの依存関係でインストールできても、MySQLが起動しないというような問題にかなりハマった。

■yum レポジトリの追加(CentOS x86_64 の場合)

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

おそらく下記のライブラリの引数設定で全てが上手くいくはず。
mysql-devel.x86_64の指定がないと、i386がデフォルトインストールとなってしまい上手くいかない。

■MySQL & php のyumでのインストール

yum --enablerepo=remi,epel install php php-pear php-devel php-pdo php-xml php-mbstring php-process php-pecl-apc php-mysql mysql-server mysql-devel.x86_64 mysql-php readline-devel curl-devel httpd-devel 

Windowsでの、php5.2 で mysql モジュールが読み込めない

2011年4月16日 Posted by PURGE

毎回、Apache と php と MySQLをインストールすると必ずハマる。
今回は、下記構成
Windows XP
Apache2.2
php5.2
MySQL5.0

Apacheについて
一言、Apacheのインストールは問題ない。

phpについて
バイナリWindows用のphp5.2は、msiインストールで行うと、設定ファイルが最低限の構成となってる為、zipファイルのphpをダウンロードして解凍して私用したほうが良い。必要なライブラリも揃っている。
インストーラで行うと、http.conf に下記記述を追加してくれる。

http.conf

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:/usr/local/php5.2/"
LoadModule php5_module "C:/usr/local/php5.2/php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

但し、具体的なパスは自分で確かめて記述すること。
extension_dir を指定して、コメントアウトを外す

php.ini

extension_dir = "./ext"
extension=php_mysql.dll
extension=php_mysqli.dll

それでもダメな場合は、コマンドラインから php -v を打てば何かのエラーが表示される。
自分は、これで解明できた。

MySQLについて
phpinfo()で、一覧に出てこないのでハマった。
おそらく、上記php.ini に正しく記述すれば問題ないはず。