チュートリアル実行で再帰コールが100を超えたというエラーが発生

52 views
Skip to first unread message

tohru ohno

unread,
Dec 29, 2014, 3:35:48 AM12/29/14
to bear-p...@googlegroups.com
初めまして、大野と申します。
仕事でBEARを使うことになりそうなので事前に学習中です。

環境はVMWare上のUbuntu14.04で作業しています。

1、インストール
$ composer create-project bear/package ./app1
を実行して以下のような表示がされたのでおそらく問題ないと思います。

Generating autoload files
#!/usr/bin/env php
# Required
[OK] PHP: 5.5.9-1ubuntu4.5
[OK] Vendor install
# Optional
[OK] APC: 4.0.2
[NG] uri_template: 
# Develop
[OK] Xdebug: 2.2.3
[NG] PDO-Sqlite: 
[NG] xhprof

BEAR.Sunday env check: [OK] 

2、チュートリアルの実行
に従って
$ cd app1
$ php apps/Demo.Sandbox/bootstrap/contexts/api.php get app://self/first/greeting
チュートリアルでは、「400 Bad Requestのレスポンスが帰ってきます」
となっていますが以下のように再帰コール100を超えたというエラーが表示されます。
PHP Fatal error:  Maximum function nesting level of '100' reached, aborting! in /home/oono/bear/app1/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php on line 120
PHP Stack trace:
PHP   1. {main}() /home/oono/bear/app1/vendor/bear/demo-apps/Demo.Sandbox/bootstrap/contexts/api.php:0
PHP   2. require() /home/oono/bear/app1/vendor/bear/demo-apps/Demo.Sandbox/bootstrap/contexts/api.php:45
PHP   3. BEAR\Package\Bootstrap\Bootstrap::getApp() /home/oono/bear/app1/vendor/bear/demo-apps/Demo.Sandbox/bootstrap/instance.php:22
PHP   4. BEAR\Package\Module\Di\DiCompilerProvider->get() /home/oono/bear/app1/src/Bootstrap/Bootstrap.php:44
PHP   5. Ray\Di\DiCompiler::create() /home/oono/bear/app1/src/Module/Di/DiCompilerProvider.php:85
PHP   6. Ray\Di\DiCompiler::createInstance() /home/oono/bear/app1/vendor/ray/di/src/DiCompiler.php:83

何か設定が足らないあるいは間違っているのでしょうか?

お手数ですがよろしくお願いいたします。



Yoshitaka Jingu

unread,
Dec 29, 2014, 6:28:59 AM12/29/14
to bear-p...@googlegroups.com
大野さん初めまして。神宮と申します。

こちらのエラーですが、xdebugの infinite recursion 保護機能による実行中止だと思います。

http://xdebug.org/docs/basic

xdebug.max_nesting_level を適宜設定すれば解決するのではないでしょうか。

2014/12/29 17:35、tohru ohno <day...@gmail.com> のメッセージ:

--
このメールは Google グループのグループ「The BEAR Project for PHP」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには bear-project...@googlegroups.com にメールを送信してください。
このグループに投稿するには bear-p...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/bear-project/2f45df20-7a4f-4500-b443-69de9a57840e%40googlegroups.com にアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

tohru ohno

unread,
Dec 29, 2014, 7:02:12 AM12/29/14
to bear-p...@googlegroups.com
神宮さん、大野です。
早速の回答ありがとうございます。

/etc/php5/mods-available/xdebug.ini
に以下の設定を追記しました。
xdebug.max_nesting_level=1000

再実行しましたが、 Call to undefined methodと表示されます。メッセージは以下の通りです。
CompilationLogger.php の361行目は
$log .= sprintf("num:%s type:%s name:%s\n", $num, $type, $item->getName());
このgetName()がないと言われているような気がします。

ただどう対処すれば良いかが不明です、もしお分かりでしたら教えていただけないでしょうか?
よろしくお願いいたします。

$ php apps/Demo.Sandbox/bootstrap/contexts/api.php get app://self/first/greeting
PHP Fatal error:  Call to undefined method Ray\Di\DependencyReference::getName() in /home/oono/bear/app1/vendor/ray/di/src/CompilationLogger.php on line 361
PHP Stack trace:
PHP   1. {main}() /home/oono/bear/app1/vendor/bear/demo-apps/Demo.Sandbox/bootstrap/contexts/api.php:0
PHP   2. BEAR\Package\Dev\Debug\ExceptionHandle\ExceptionHandler->handle() /home/oono/bear/app1/vendor/bear/demo-apps/Demo.Sandbox/bootstrap/contexts/api.php:94
PHP   3. BEAR\Package\Dev\Debug\ExceptionHandle\ExceptionHandler->writeExceptionLog() /home/oono/bear/app1/src/Dev/Debug/ExceptionHandle/ExceptionHandler.php:119
PHP   4. Ray\Di\DiCompiler->__toString() /home/oono/bear/app1/src/Dev/Debug/ExceptionHandle/ExceptionHandler.php:266
PHP   5. Ray\Di\CompilationLogger->__toString() /home/oono/bear/app1/src/Dev/Debug/ExceptionHandle/ExceptionHandler.php:255


2014年12月29日月曜日 20時28分59秒 UTC+9 Yoshitaka Jingu:

koriym

unread,
Dec 29, 2014, 9:24:53 AM12/29/14
to bear-p...@googlegroups.com
大野さん

おかしいですね。
とりあえず361行目をコメントアウトでお願いします。

2014年12月29日月曜日 21時02分12秒 UTC+9 tohru ohno:

tohru ohno

unread,
Dec 30, 2014, 5:28:07 AM12/30/14
to bear-p...@googlegroups.com
こんばんわ、大野です。

CompilationLogger.php の361行目をコメントアウトとしたところ想定した動作(ステータスコード:400を返す)をしました
このままチュートリアルを続けたいと思います。
ありがとうございました。

$ php apps/Demo.Sandbox/bootstrap/contexts/api.php get app://self/first/greeting
400 Bad Request
x-exception-class: ["BEAR\\Resource\\Exception\\SignalParameter"]
x-exception-message: ["$name in Demo\\Sandbox\\Resource\\App\\First\\Greeting::onGet"]
x-exception-code-file-line: ["(0) \/home\/oono\/bear\/app1\/vendor\/bear\/resource\/src\/SignalParameter.php:62"]
x-exception-previous: ["BEAR\\Resource\\Exception\\Parameter: $name in Demo\\Sandbox\\Resource\\App\\First\\Greeting::onGet"]
x-exception-id: ["e500-9eede"]
x-exception-id-file: ["\/home\/oono\/bear\/app1\/vendor\/bear\/demo-apps\/Demo.Sandbox\/var\/log\/e500-9eede.log"]
cache-control: ["no-cache"]
date: ["Tue, 30 Dec 2014 10:18:44 GMT"]
[BODY]


2014年12月29日月曜日 23時24分53秒 UTC+9 koriym:
Reply all
Reply to author
Forward
0 new messages