Category: ‘php’

Fatal error: require(): Failed opening required ‘C:\xampp\htdocs\ec-cube4\var\cache\prod/doctrine/orm/Proxies\__CG__EccubeEntityMasterWork.php’

2020年11月18日 Posted by PURGE

EC Cube4で、管理画面とユーザ画面ともに、表題のエラーが発生した。キャッシュをクリアしようと思ったが、管理画面がこのような状態なので、にっちもさっちも行かなくなった。そこで、コマンドラインからキャッシュをクリアする。

>php bin/console cache:clear

\bin\console’ は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

2020年11月18日 Posted by PURGE

PHPコマンドとして、php から実行すること。

>php bin/console c:c

php-commonの競合エラー

2012年5月9日 Posted by PURGE

zabbixをインストール中に、下記のエラーに出くわした。

php53-common-5.3.3-7.el5_8.x86_64 from installed has depsolving problems
--> php53-common conflicts with php-common
Error: php53-common conflicts with php-common
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest

この場合、下記等 を試したが、どうしてもダメ。

yum clean all

アンインストールしようとしたが、そんなもの無いと叱られる。

yum erase php-common
Package(s) php-common available, but not installed.

どうやら、昔、手動でphpがインストールされていたので、競合していたようだ。
仕方ないので、古いphpを手動でアンインストールした。
その後、再度 yum にて php をインストールしなおした。

何とかなった。

Symfony2 とeclipse plugin事始め

2011年10月22日 Posted by PURGE

以前、Symfony1.4 でアプリを作成していたが、どうも開発ツールの選定と使い方を間違ったらしく、デバッグできないことで挫折。

久しぶりに Symfony を再勉強してみようと思い、Symfony2 に挑戦しようと思った。でも、開発の深い部分に入ると、やはり開発環境ツールは必須なので、調べてみるとありました。

Symfony2 Eclipse Plugin

私の最高のお気に入り開発ツールは、eclipse。既存の eclipse3.6 にインストールしようとしたが、PDTのバージョン違いで怒られる。そもそも、Symfony2 Eclipse Plugin もPDT3.0 からサポートしているらしいので、eclipse3.7の最新にしてみた。

ちなみに、eclipse PDTのAll in Oneパッケージを探していたが、それらは、eclipse3.6 & PDT2.2 までしか対応していないようなので(※執筆時点)、eclipse3.7 for Java Developer をダウンロードし、Symfony2 Eclipse Plugin のサイトに指定されたアップデートサイトから、すんなりPDT3.0 を含めて、Symfony2 Eclipse Pluginがインストールできた。

そして次は、そもそものSymfony Standard Editionをダウンロードしてみる。ダウロードしたzipファイルを展開してみる。展開したファイルをeclispeに読み込ませてみた。

symfony バリデーションエラー csrf token: Required.

2011年7月24日 Posted by PURGE

下記エラー発生。3日程ハマった。

csrf token: Required.

基本的には、バインド (sfForm::bind) の使用の仕方を理解していなかった。
formクラスに下記の要素名定義を行っていなかった為にバインドがうまく行かずに、バリデーションエラーとなっていた。

アクションクラス

class HogeAction extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    //フォーム生成
    $this->form = new HogeForm();
    if($request->isMethod(sfRequest::POST))
    {
      $this->form->bind($request->getParameter('hoge'));
      if($this->form->isValid())
      {
        $hoges = $this->form->getValues();
        $hoge = $hoges['hoge'];
        //
        $this->getUser()->setFlash('hoge', $hoge);
        $this->redirect('next/foo');
    }
  }
}

フォームクラス

class HogeForm extends BaseForm
{
  public function configure()
  {
    //フォーム設定
    $this->setWidgets(array('hoge'=> new sfWidgetFormInput()));
    //バリデーション設定
    $this->setValidators(array('hoge'=> new sfValidatorString()));
    //要素名定義
    $this->widgetSchema->setNameFormat('hoge[%s]');
  }
}

symfony action.class.phpでの初期化処理

2011年7月20日 Posted by PURGE

アクションクラス内で、各アクション共通の変数を持たせたかったのだが、普通は下記のメソッドを使用するらしい。

public function preExecute()
{
    //共通処理
    $this->common = "共通変数";
}
public function executeIndex1()
{
    //ログ出力
    $this->getLogger()->info($this->common);
}
public function executeIndex2()
{
    //ログ出力
    $this->getLogger()->info($this->common);
}

sfMelodyPluginを試す その3

2011年7月14日 Posted by PURGE

sfMelodyPluginについては、正直言って、使用をほとんど諦めているのだが、続けられるところまでと思って、前回の続き。下記認証画面が表示されるところまで辿り着いた。

アプリを認証ボタンを押してみる。

するとエラー。

500 | Internal Server Error | Doctrine_Record_UnknownPropertyException
Unknown record property / related component "field1" on "sfGuardUser"

だけど見事にコールバックされているようだ。うれしい。それでコールバックされてURL欄を見てみると、確かに oauth_token と oauth_verifier が発行されている事に気付く。

http://local.whoocus.com/frontend_dev.php/access/twitter?oauth_token=Zl9fNdYadhdbuc&oauth_verifier=5R65EtJ66NtAlDu5F4k

結局のところ、sfDoctrineGuardPlugin の使用方法に問題がありそうだ。今回はまた出直そうと思う。

ちなみに、この oauth_token とは、twitter がアプリ認証の際に、ユーザに対して発行されるリクエストトークンと呼ばれる文字列である。つまり、sfDoctrineGuardPlugin の仕組みの中で、ユーザ登録と同時に、このリクエストトークンを自サイトのユーザ情報として保持しなければならないのだろうと推測する。

とりあえず、Doctrine_Record_UnknownPropertyException を調べる事とする。

sfMelodyPluginを試す その2

2011年7月6日 Posted by PURGE

その後、symfony や OAuth認証それ自体の理解不足という事で勉強していた。sfMelodyPlugin の使用をあきらめかけ symfony と関係なくtwitteroauthという有名らしい phpライブラリを試してみた。

認証の仕組みを何となく理解し、早々と sfMelodyPlugin の使用に戻ってみると、どうやら自分のrouting.yml の設定が悪いらしい。もう一度 symfony の routing をおさらいして設定。

すると、以前は、twitterのエラー画面に飛んでいた画面が、下記のお馴染みの画面と連携できた。

原因不明だが、以前エラー画面に飛んでいた時は、下記パラメータのoauth_token=xxxxxxxxxxxxxxxx が送信できていなかったようだ。

https://api.twitter.com/oauth/authorize?param1=value&oauth_token=xxxxxxxxxxxxxxxx

今回はうまくリクエストを送信できたようだ。詳細は、また調査後に記述しようと思う。一歩一歩進んでいる。
続きはまた後日・・・。

※その後の調査の結果、筆者はWindows と Mac それぞれで開発しているのだが、Mac だとうまく上記 oauth_token=xxxxxxxxxxx パラメータ付きでリクエストされる。Windows で開発した場合はどうしてもパラメータが付加されずに下記画面になってしまう。

尚も原因不明である。

symfony Plugin の登録

2011年7月5日 Posted by PURGE

symfony へのプラグイン登録は、対象プラグインを、pluginディレクトリに配置し、 config/ProjectConfiguration.class.php に登録する。

class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->enablePlugins(array(
    						'sfDoctrinePlugin',
    						'sfDoctrineGuardPlugin',
    						'sfDoctrineOAuthPlugin',
    						'sfMelodyPlugin'));
  }
}

sfDoctrineGuardPlugin と sfDoctrineOAuthPlugin と sfMelodyPlugin の継承関係

2011年7月4日 Posted by PURGE

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

sfMelodyPlugin のReadmeも理解できないし、情報サイトもほとんどないし、使用方法が全く分からないので、ソースコードを追ってみることにした。

とりあえず、わかったことは、下記の継承関係が存在する。ライブラリ的には依存関係。

■OAuth関係

  • sfDoctrineOAuthPlugin/lib/base/vendor/oauth/OAuth.php
  • sfDoctrineOAuthPlugin/lib/base/sfOAuth.class.php
  • sfDoctrineOAuthPlugin/lib/base/sfOAuth1.class.php
  • sfMelodyPlugin/lib/melody/base/sfMelody1.class.php
  • sfMelodyPlugin/lib/melody/sfTwitterMelody.class.php
class sfOAuth1 extends sfOAuth
{
}
class sfMelody1 extends sfOAuth1
{
}
class sfTwitterMelody extends sfMelody1
{
}

■ユーザ関係

  • symfony/lib/user/sfUser.class.php
  • symfony/lib/user/sfSecurityUser.class.php
  • symfony/lib/user/sfBasicSecurityUser.class.php
  • sfDoctrineGuardPlugin/lib/user/sfGuardSecurityUser.class.php
  • lib/model/doctrine/sfDoctrineGuardPlugin/sfGuardUser.class.php
  • sfMelodyPlugin/lib/user/sfMelodyUser.class.php
  • apps/frontend/lib/myUser.class.php
interface sfSecurityUser
{
}
class sfUser implements ArrayAccess
{
}

class sfBasicSecurityUser extends sfUser implements sfSecurityUser
{
}
class sfGuardSecurityUser extends sfBasicSecurityUser
{
}
class sfMelodyUser extends sfGuardSecurityUser
{
}
class myUser extends sfMelodyUser
//class myUser extends sfBasicSecurityUser
{
}

つまり、親クラスのメソッドや変数(属性)を利用可能ということ。

で、README にある下記のコードは、ユーザを通してメソッドを使用するということのようだ。

public function executeIndex(sfWebRequest $request)
{
  //ユーザを取得しサービスに接続する
  $this->getUser()->connect('twitter'); //app.yml に登録したサービス名
}

ということは、下記コードはインスタンスを得られるという事なのか?

  $melody = $this->getUser()->getMelody('twitter');

どうしても、Alias と Namespaces の使用方法が理解できない。
また行き詰った・・・。