2017-10-11 10 views
0

私はGAE標準環境にいくつかのPHPアプリケーションを配備しています。ライブのGoogle App Engineで404、ローカルのSDKサーバで作業中

私はgcloud SDKで提供されるローカルサーバー上で、期待どおりに動作する新しいアプリケーションを展開しています(端末コマンド:dev_appserver.py --log_level=warning app.yaml)。

The page could not be found 

No web page found for the web address: xxx 
HTTP ERROR 404 

app.yamlをは次のようになります:

runtime: php55 
api_version: 1 
threadsafe: true 

skip_files: 
- README.md 
- package.json 

handlers: 

- url: /(.*\.html) 
    script: mod_rewrite.php 
    secure: always 

- url: /(.*\..{2,}) 
    static_files: \1 
    upload: (.*\..{2,}) 
    secure: always 

- url: /.* 
    script: mod_rewrite.php 
    secure: always 

問題は、私は生きてGAEサービス(gcloud app deploy app.yaml --project myapp)にそれを展開するときに、私は404エラーメッセージが表示されますということですまた、特定のファイルを指すテストハンドラを追加しようとしました:

- url: /(mytest\.html) 
    static_files: \1 
    upload: mytest.html 
    secure: always 

このように私はURLにアクセスできるようになりました。しかしそれはそれでした。その他のURLは404

興味深いのは、それがあるべき一方、現在のデプロイされたバージョンでのGAEアプリのVersionsタブで、それは、それの以前のバージョンが存在しない場合でも、アプリが0 Bであると述べているということです約30Mb。展開すると、988のファイルがすべてアップロードされているように見えます。遅いインターネット接続のためにしばらく時間がかかるからです。

チュートリアルを正常に完了した後、新しいプロジェクトにすべてを再デプロイしようとしましたが、同じ問題が発生しました。

答えて

0

application_readableハンドラオプションを使用すると、それぞれの静的ファイルもアプリケーションコードに含めることができます。 Handlers elementから:

application_readable

オプション。ブール値。デフォルトでは、静的ファイルハンドラ で宣言されたファイルは静的データとしてアップロードされ、エンドユーザーにのみ提供されます。それらは をアプリケーションで読み取ることはできません。このフィールドがtrueに設定されている場合、 ファイルもコードデータとしてアップロードされるので、アプリケーションは を読み取ることができます。どちらのアップロードもコードと静的データに対して課金されます resource quotasこのよう

- url: /(.*\..{2,}) 
    static_files: \1 
    upload: (.*\..{2,}) 
    application_readable: true 
    secure: always 
0

数時間のテストの後、私はついにこの問題が何かを認識しました。

GAEでは、特定のパスを静的に宣言すると、非コードパスとして解釈されます。したがって、パス内のすべてのファイルは、requireまたはincludeというPHP環境で実行されるスクリプトからはアクセスできず、デプロイされたコードデバッガには表示されません。

このため、すべての静的ファイルをサブフォルダ(www)に、非静的ファイルをrequiredに、別のサブフォルダのPHPスクリプトで配置しました。

関連する問題