0

他のすべての静的ファイルは、ドメインで通常どおり機能しています。App Engine YAMLファイルでスクリプトが実行されていない

PHPファイルが実行されていないようです。私はそれをスクリプトとして実行しようとしないときに(そして静的なファイルとしてアップロードするだけで)うまく動作します。 jQueryがそれを呼び出すときに平文を返すので、間違いなくファイルパスの問題ではありません。

しかし、いったんyamlにphpファイルとして登録し、jQueryが「hello、world! Firefoxのネットワークモニタで404が返され、コンソールに応答がありません。

App Engine Standard上で孤立しているサーバー側のPHPスクリプトを実行することに関して、私が見逃していることはありますか? (私のindex.htmlでのjQueryをロードした後に呼ばれる)

app.yamlを

runtime: php55 
api_version: 1 
threadsafe: true 

handlers: 
# Serve php scripts another way. 
- url: /scripts/elastic.php 
    script: scripts/elastic.php 

# Handle the main page by serving the index page. 
# Note the $ to specify the end of the path, since app.yaml does prefix matching. 
- url: /$ 
    static_files: index.html 
    upload: index.html 


# Handle folder urls by serving the index.html page inside. 
- url: /(.*)/$ 
    static_files: \1/index.html 
    upload: .*/index.html 

# Handle nearly every other file by just serving it. 
- url: /(.+) 
    static_files: \1 
    upload: (.*) 

elastic.php

<?php 
return 'Hello, world!' 
?> 

script.js

$(document).ready(function(){ 
    $.get("./scripts/elastic.php", function(data) { 
     console.log(data); 
    }); 
}); 

答えて

1

私が考えているのは、あなたの最終的なhandlersディレクティブが、アプリケーション内のすべてのファイルをアップロード可能で静的なものとして扱うように指示していることです。これは、以前のスクリプトの呼び出しが誤っている(おそらくApp Engineのバグ...)という結果につながったと思います。

次のようなPHPスクリプトか何かのいずれかであることを最終的なハンドラを変更した場合、あなたは、ほとんどが良いことがあります:

- url: /(.*) 
    static_files: \1 
    upload: (.*)\.html 

あなたはまた、中にあなたのPHPスクリプトechoまたはprint結果を持っているしたいと思いますreturnではなくレスポンスを返します。実際にはブラウザに表示するために何も返されません。

+0

あなたは100%正確です!何らかの理由で私は、最初のスクリプトハンドラがすべてのphpファイルを捕まえてから漏斗をさらに下げることができるようにカスケード接続すると考えました。私はあなたの答えがより多くの人々を助けることができるようにタイトルを調整しました。ありがとうBrett :) – Diz

+0

少なくともURLマッチングのためにそのように動作するはずですが、私はアップロードプロセス中にファイルが上書きされたり、静的に再分類されていると思います。私はその行動についてのバグを開いて、それがどういうものなのかを見ていきます。これが起こる可能性があることをドキュメント内の人々に警告する必要があるかもしれません。 – BrettJ

関連する問題