Open yuki777 opened 3 years ago
以前、php8でチュートリアル1を行ったときは問題なかったので、 依存パッケージのアップデート関連かもしれません。
% php bin/app.php get /weekday/2011/05/23
200 OK
Content-Type: application/hal+json
{
"weekday": "Mon",
"_links": {
"self": {
"href": "/weekday/2011/05/23"
}
}
}
となり、再現できませんでした。
composer compileはエラーありません。
#2021-09-03 18:07:18 adachi@macbookpro.local:~/tmp/MyVendor.Weekday main 4eee14d php8.0
composer compile
> ./vendor/bin/bear.compile 'MyVendor\Weekday' prod-app ./
............................................................
........
Compilation (1/2) took 0.240000 seconds and used 36.846000MB of memory
Success: 68 Failed: 0
Preload compile: /Users/adachi/tmp/MyVendor.Weekday/preload.php
Object graph diagram: /Users/adachi/tmp/MyVendor.Weekday/var/log/prod-app/module.dot
Compilation (2/2) took 0.020000 seconds and used 3.553000MB of memory
autoload.php: /Users/adachi/tmp/MyVendor.Weekday/autoload.php (overwritten)
が、実行ではエラーでした。
#2021-09-03 18:12:50 adachi@macbookpro.local:~/tmp/MyVendor.Weekday main 4eee14d [🤷] php8.0
php bin/app.php get /weekday/2011/05/23
500 Internal Server Error
content-type: application/vnd.error+json
{
"message": "Internal Server Error",
"logref": "c201017d",
"request": "get app://self/weekday?year=2011&month=05&day=23",
"exceptions": "Ray\\Di\\Exception\\Unbound(dependency 'MyVendor\\Weekday\\MyLoggerInterface' with name '' used in /Users/adachi/tmp/MyVendor.Weekday/src/Resource/App/Weekday.php:14 ($logger))",
"file": "/Users/adachi/tmp/MyVendor.Weekday/vendor/ray/di/src/di/Arguments.php(57)"
}
(composer compile後に、) autoloadを変更してみました
#2021-09-03 18:15:06 adachi@macbookpro.local:~/tmp/MyVendor.Weekday main 4eee14d [🤷] php8.0
cat << EOF > autoload.php
<?php
require __DIR__ . '/vendor/autoload.php';
EOF
#2021-09-03 18:15:25 adachi@macbookpro.local:~/tmp/MyVendor.Weekday main 4eee14d [🤷] php8.0
cat autoload.php
<?php
require __DIR__ . '/vendor/autoload.php';
#2021-09-03 18:15:28 adachi@macbookpro.local:~/tmp/MyVendor.Weekday main 4eee14d [🤷] php8.0
php bin/app.php get /weekday/2011/05/23
500 Internal Server Error
content-type: application/vnd.error+json
{
"message": "Internal Server Error",
"logref": "c201017d",
"request": "get app://self/weekday?year=2011&month=05&day=23",
"exceptions": "Ray\\Di\\Exception\\Unbound(dependency 'MyVendor\\Weekday\\MyLoggerInterface' with name '' used in /Users/adachi/tmp/MyVendor.Weekday/src/Resource/App/Weekday.php:14 ($logger))",
"file": "/Users/adachi/tmp/MyVendor.Weekday/vendor/ray/di/src/di/Arguments.php(57)"
}
#2021-09-03 18:15:49 adachi@macbookpro.local:~/tmp/MyVendor.Weekday main 4eee14d [🤷] php8.0
https://github.com/bearsunday/tutorial1/tree/php8 のコードを参照してみます。
(composer compile実行せずに、) autoloadを変更して実行したところ、エラーでなくなりました。正常に動作しました。 https://github.com/yuki777/bear-sunday-tutorial1-php8/commit/e8da3cb00e3a532ede617c8050ee400e9f4d9f58
(composer compile実行せずに、) autoloadを変更して実行したところ、エラーでなくなりました。正常に動作しました。
こちらのコミットは不要でした。
rm -fr var/tmp
でエラーがなくなりました。
rm -fr var/tmpでエラーがなくなりました。
この内容を比較すればもっと分かりそうですね!
https://gist.github.com/yuki777/87026e08a85b7fdbb9d9745215a1f53c こちらに再現手順がありました。
# 一時ディレクトリ作成する
cd /tmp
# skeltonからプロジェクトを作成し、MyVendor、Weekdayを入力する
composer create-project bear/skeleton MyVendor.Weekday
# => What is the vendor name ? MyVendor
# => What is the project name ? Weekday
# チュートリアル1を自動実行するスクリプトをダウンロードする
wget https://gist.githubusercontent.com/yuki777/87026e08a85b7fdbb9d9745215a1f53c/raw/1fe9db02fe35cf8681aa03c65b9dda4123339903/bear-sunday-tutorial1-php8.bash
# チュートリアル1を実行する
/bin/bash ./bear-sunday-tutorial1-php8.bash
https://bearsunday.github.io/manuals/1.0/ja/tutorial.html#di で
php bin/app.php get /weekday/2011/05/23
を実行するとエラーになる。