Class ‘RAFIE\Twig\TwigViewServiceProvider’ not found

Filed in Laravel5 | php Leave a comment

結論:psr-0とpsr-4で読み込み方が違うのでそれ用の指定をcomposer.jsonに追加してあげると解決した。

なんとphpの話題

Laravel5というのを触り始めまして、もうこれがなんだかハッピーな感じの作りになっているんで自宅でも触って練度高めていこうというモチベーションがあるんです。大変に珍しいことです。
最近のphp開発とはこうなんですというエッセンスがあるので、時代から取り残されていた部分を一挙に取り返さないといかん、と思っております。名前空間とかトレイトとか、よく分かってないけどそういうやつね。

で、ちょうどFlaskで作りかけて放置していた物があったので、それをLaravel5で移植してみます。
Laravel5 + Twig + React + Stylus + webpack といった感じ。いまどきのアレコレてんこ盛り。
Reactはまだよく分かってないが、webpackでStylusをコンパイル?すると、jsの中にcssの表現も一緒に入っちゃって、なんかもんげー感じです。ファイルの分割の機能がwebpackにはあるので、cssファイルとして別途吐き出させることも可能なはず。そこまでは理解が進んでないのでまたこんど。

さて掲題の件。
さいしょこそ普通に

こういうかんじでLaravel5にTwigを組み込み、使ってました。
が、たぶんartisanコマンド使ったあたりで突如、

FatalErrorException in ProviderRepository.php line 150: Class ‘RAFIE\Twig\TwigViewServiceProvider’ not found

こんなエラー発生。ほんとに突然です。前後でcomposer.jsonを書き換えたとかもなかった(はず)。
あまりにも急なことだったので、寝ぼけてファイルの移動でもやらかしたかとオロオロしたりとか。vendorディレクトリとcomposer.lockをまるっと消してcomposer installで再構築してみても症状が変わらない。まったく意味がわかんなかったんですが、Laravel5本か、どっかのブログか、qiitaでみた記述をふと思い出しました。
いわく、何か一つでもPSR-4形式でのモジュール読み込みをした瞬間から、特に指定がなければLarabel全体がPSR-4で動作するものとしてなんとかかんとか。
うろ覚えなんで話半分で。
さしあたりそのぼんやりしたヒントを手がかりにして、ぐぐります。
「psr-0 psr-4 php」とか「composer.json psr-4 autoload」とか、雑なキーワードですが、仕方ない。何も分かってない状態。

不思議とヒット

探してみるといろいろ出てきます。

あら、これなんじゃないの?

psr-0とpsr-4以外記述方法に違いはありませんが、設定値の意味が変わっています。
ComposerでPSR-4仕様のオートロードを設定する | Beaglee技術blog

ほう。ほうほう。どうせ意味分かってないのだしということで、書き方を真似してみます。

さあどうだ。画面をリロードしてみます。

Whoops, looks like something went wrong.

ウープスじゃねえよぶっ飛ばすぞ。
あ、そうだアレやんないと。

composer dump-autoload

リロード。
はい、解決ですよかった。
かなりラッキーパンチで解決したからよかったようなものの、あたしには難しかったよ。
ともあれ、これで開発の続きができるというものです。よかった。

かんけいないけどGistって便利ね。なんだこれ。

記事中にあるLaravel5本とはこれのこと。

, , , ,

(解決済)fuelphpセットアップ時に怒られる(Error – date_default_timezone_get(): It is not safe to rely on the system’s timezone settings.以下略)

Filed in fuelphp | php 2 Comments

タイトル長すぎか。まあいいか。
VPSに適当にphp5.5.8(mysql,openssl,enable-cgiが有効)を放り込み、fuelphpをセットアップしております。

oilでアプリケーションを生成するあたりで、最後に
php composer.phar update
こんなのやりますな。すると
Writing lock file
Generating autoload files
Error – date_default_timezone_get(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone ‘UTC’ for now, but please set date.timezone to select your timezone. in COREPATH/classes/fuel.php on line 161

はあ。
最初はたんにphp.iniがないんで怒られてたんですが、php.iniを設置し、date.timezoneの値をセットしてあげてもこの症状が変わらない。
どうもあちこち見た感じ、php.iniに書いても空で初期化されてphpが開始してしまっているみたいな感触。
ちなみに近くにある設定箇所の
;date.default_latitude = 31.7667
;date.default_longitude = 35.2333
;date.sunrise_zenith = 90.583333
;date.sunset_zenith = 90.583333

このへんは、コメントアウトされているにもかかわらずなんか値を保持している状態。
気持ち悪くてかなわない。

いささか消極的な解決法

なんだかfuel.phpで死んでるようなので、
fuel/core/classes/fuel.php
の先頭あたりに以下を記述。
date_default_timezone_set(“Asia/Tokyo”);

やだなあこういうの……。
嫌なのはまああれですが、怒られなくなったのでいったんこれで進めることに。
試し書きでphpinfoとか書いて上げるようなノリの一枚物でも、こういう処置を講じてあげないとだめなのかいな。めんどくさい。

根本的に解決しました

コメント欄参照というと簡単すぎですが、コンパイル時に指定されているphp.iniの位置に、ただしくphp.iniが置かれていないことが原因でした。
あたし/etc/php.iniにおいてたんだけど、phpinfo確認したら

Configuration File (php.ini) Path /usr/local/lib

とあるわけよ。
やんなっちゃうよね。
/usr/local/lib/php.ini
に設置しなおし、php-cgiの再起動(nginxから使うので)して解決。
お騒がせしました。

,

YiiのGiiで403「You are not allowed to access this page.」

Filed in php | Yii Leave a comment

プロジェクト立ち消えにつき研修やる必要がなくなった。
フー

Yiiもさわりはじめた。アレコレ親切なのはすごい。すごいが、いざというときに邪魔になったりしないだろうなという不安も。
Web画面からcrud一発作成は便利だなー
こういうのはじめて触ったんだけど感動しますね。

自機じゃなくてLAN内の鯖にスクリプトを置いたため、giiを動かす際に手間取りました。
「You are not allowed to access this page.」なんていわれて403返されちゃう。
えー403?動いてるけど403ってーと?

'gii'=>array(
	'class'=>'system.gii.GiiModule',
	'password'=>'pAsSwOrD',
	// If removed, Gii defaults to localhost only. Edit carefully to taste.
	'ipFilters'=>array('127.0.0.1','::1','192.168.0.*'),
),

こんなんでいけた。

,

三流phperがpythonやwsgiのなにでつまづくかっていうと

Filed in Apache | php | Python | 未分類 Leave a comment

ぜんぶapacheさんがよろしく沙汰しとってくれてた部分も意識する必要があって、
「そんなことしないと動かないの?」
っていうのが大きい。と思うのね。
その違和感と言うかギャップというのか、そういうのを解消する助けになる記事をそのうち書こうと思います。

  1. アプリケーションサーバっつうのがあって、ポート開いて待受をしたりする。アパッチさんやNginxさんあたりがポート80番で受け取ったのを、別ポートで待ち受けてるアプリケーションサーバに渡したりするんだな。apache:80→pylons:8050とかさ。そういうの。
  2. phpはapacheモジュール(mod_php)で動くから、Permissionいじんなくてもいいんだな。あいつが色々とやってくれる運びになってる。pythonも昔はmod_pythonとかあったけど今使う人あんまいないよ。wsgiっつうしかけがあって、説明読んでも意味分からんかもだけどそっちが主流ってもっぱらの噂
  3. いっちばん最初に1ファイルのCGIでもいいのでpython動かしてみよう、のときにどうしたら良いのか正直わからない
  4. php.net/manual/jaみたいなわかりやすい総本山が見つからない。ここ見て
  5. あと、version2.5のだけどチュートリアルを何度も読むのがいいと思う。コマンドラインとかで色々やるのつまらないと思うけど、ひととおりやって、それからCGIで動かしてみるっていう順番でライブラリリファレンス見るといいと思います。HTMLになってくれないと調子でないよね正直。
  6. 「借りてるレンタルサーバはpythonって入ってない」これ多くてコケる人多いと思う。ソース落としてきてコンパイルしちゃえよ。./configure prefix=/home/youraccount/pythonってやりさえすればいいんだ。ほんとよ(これはそのうち書く)。
  7. いまどきはvirtualpythonぽ
  8. PEARいっこどどんと落としてくれば済んだのにじぶんでeasy_install!pip!→import!import!ってめんどくさい。分かるよ兄弟。でもrequire_onceつかってたろ。同じことだよ
  9. auto_loadだっけ。あれは悪魔の所業だ。どこで何が起きてるのかわからないじゃんね
  10. どっかで定義すれば適当に使えていた定数とか、あれnetbeansでも入れてなければ、どこで定義されてるか追いかける気にもならないよね。pythonのimportでフルパスに近い書き方させられるのは、書いたあとで手を入れたとき、重要な意味を持つってわかると思う。もっともpythonも最近は相対パスっぽい呼び方できるんだけど、まあ「どこにあるそれを呼ぶのか」が明示的なのはメリット大きい
  11. そんなの規約で定めればいいじゃん、結構ですがそのルールきちんと機能し続けるにもなかなか苦労が
  12. 2と3どっちがいいの!?2011年11月時点では2.7でよいと思いますのよ

Continue Reading

,

メモメモ

Filed in NDI Leave a comment

仙人の心得 linux:proxy接続環境で設定すること
http://blog.mktime.com/archive/20.html

PHP » PYTHON
http://www.php2python.com/
これやばい。あたしのよーなうんこPHPerには福音となるのではないか。くわ。

phpでいうstr_padってどうしたらいいのー
http://www.php2python.com/wiki/function.str-pad/
こういう具合。やばい。

,

TOP