SkyWay版で困ったとき
トークン発行サーバー(PHP版・Vercel版・Cloudflare版)で、よくあるつまずきと、その直しかたをまとめました。まずブラウザで、トークン発行サーバーのURLの後ろに/v1/statusを付けたものを開き、何が出るかを見てください(例:https://example.com/backend/v1/status)。
/v1/statusの結果から探す
| 出たもの | 意味と、見るところ |
|---|---|
OK | PHP版が正しく動いています。Axeからつながらないへ |
ORIGIN_REQUIREDを含む文字 | Vercel版が正しく動いています(ブラウザで直接開くとOriginが付かないので断る)。Axeからつながらないへ |
CONFIG_INVALIDを含む文字 | Vercel版の環境変数が足りないか、形が違います。Vercel版の設定が読めないへ |
| 真っ白、または「500 Internal Server Error」 | PHP版の.envが読めないか、PHPが古い。PHP版で500になるへ |
| 「404 Not Found」(サーバーの画面)、ファイルの一覧 | PHP版で.htaccessが効いていないか、置き場所が違う。PHP版で404になるへ |
{"error":"Origin is required."} | PHP版で、URLの綴りが違う(/v1/statusのほかのURLは、ブラウザで開くとこう返る) |
PHP版で500になる
.envがあるか:FileZillaなどで隠しファイルを表示して、index.phpと同じフォルダに.envがあるかを確かめます(→ レンタルサーバーに置く)。- 名前が正しいか:
.env.txtやenvになっていないかを見ます。 - 必須の値があるか:
SKYWAY_APP_IDとSKYWAY_SECRETが空でないかを確かめます。 SKYWAY_UDONARIUM_LOBBY_SIZEが1以上の整数か:3のように数字だけを書きます。- PHPの版が8.3以上か:管理画面でPHPの版を確かめます。8.2以前ではエラーになります。
- エラーログ:レンタルサーバーの管理画面から、PHPのエラーログを見ます。
No .env file foundやSKYWAY_APP_ID is requiredのように、原因が書いてあります。
PHP版で404になる
.htaccessが上がっているか:隠しファイルを表示して確かめます。.htaccessが効くサーバーか:mod_rewriteと、.htaccessでの設定(AllowOverride)が許されている必要があります。サーバーの説明書で確かめてください。- 置き場所:
index.phpが、開いているURLのフォルダの直下にあるかを確かめます。フォルダごとアップロードして、1段深くなっていることがよくあります。
.htaccessが使えないサーバーでは使わないでください
.htaccessが効かないと、.envがWebから読めてしまうおそれがあります。その場合は、PHP版ではなくVercelを使ってください。
Vercel版の設定が読めない
CONFIG_INVALIDのときは、環境変数が足りないか、値の形が違います。
- プロジェクトのEnvironment Variablesで、
SKYWAY_APP_ID、SKYWAY_SECRET、ACCESS_CONTROL_ALLOW_ORIGINがあるかを確かめます。 SKYWAY_TOKEN_TTL_SECONDSを入れたなら、60〜604800の数字かを確かめます。- 直したら、Redeployします。環境変数を変えても、いま動いているデプロイには反映されません(→ Vercelに置く)。
原因は、プロジェクトのLogsにも出ます。
Axeからつながらない
/v1/statusは正しいのに、Axeで部屋に入れないときです。Axeを開いたブラウザで開発者ツールを開き、コンソールとネットワークを見ます(→ 設置の準備)。
| 見えるもの | 原因と直しかた |
|---|---|
CORSのエラー(Access-Control-Allow-Originが無い、違う) | ACCESS_CONTROL_ALLOW_ORIGINが、Axeを開いているページのOriginと一致していない。PHP版では末尾の/も確かめる |
403(PHP版はForbidden.、Vercel版とCloudflare版はORIGIN_FORBIDDEN) | 上と同じ。許可していないOriginから来ている |
| 混在コンテンツ(Mixed Content)のエラー | Axeがhttps://なのに、backend.urlがhttp://になっている |
| リクエストが飛んでいない | Axeのassets/config.jsonのbackend.urlが空か、間違っている |
404 | backend.urlにパスが余分に付いている(例:.../v1まで書いている)か、足りない(サブディレクトリの名前が抜けている) |
ときどき最初の1回だけ失敗する(Vercel版)
しばらく使われていないと、Vercelの関数は眠った状態になり、最初の1回の応答に時間がかかることがあります(コールドスタート)。Axeは、つながらないときや一時的なエラーのときに、間を置いて何度か試し直します。たいていは試し直しで通るので、気にしなくて構いません。
トークンは返るのにSkyWayにつながらない
- アプリケーションIDとシークレットキーの組み合わせ:別のアプリケーションのシークレットキーを入れていると、署名が合わずにSkyWayが断ります。SkyWayのコンソールで、同じアプリケーションのIDとキーかを確かめます。
- 値の前後の空白:値を貼るとき、前後に空白や改行が入っていないかを確かめます。
- PHP版の値の中の
;:値を"で囲まずに書くと、;から後ろが切り捨てられます。.envで"で囲みます。 - PHP版のサーバーの時計:トークンには発行時刻と期限が入っています。サーバーの時計が大きくずれていると、SkyWayが期限切れと判断することがあります。
それでも解決しないとき
Issuesで知らせてください。使っている版(PHP版ならレンタルサーバーの名前とPHPの版)、/v1/statusの結果、開発者ツールに出たエラーを書いてもらえると助かります。.envや環境変数の値(特にシークレットキー)は貼らないでください。