2017-10-11 19 views
0

J'ai déployé plusieurs applications PHP sur l'environnement standard GAE, tout fonctionne bien.404 sur Google App Engine en direct, tout en travaillant sur le serveur SDK local

Maintenant, je déploie une nouvelle application, qui sur le serveur local fourni par le SDK gcloud fonctionne comme prévu (commande de terminal: dev_appserver.py --log_level=warning app.yaml).

Le problème est que quand je déployer au service GAE en direct (gcloud app deploy app.yaml --project myapp), je reçois un message d'erreur 404:

The page could not be found 

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

Le app.yaml ressemble à ceci:

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 

Je ai également essayé d'ajouter un gestionnaire de test pointant vers un fichier spécifique:

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

De cette façon, je s capable d'atteindre l'url. Mais c'était tout. Toute autre URL est 404.

Une chose intéressante est que sur l'onglet Versions de l'application GAE dans la version déployée actuelle, il indique que l'application est 0 B, même s'il n'y a pas les versions précédentes de celui-ci, alors qu'il devrait être environ 30 Mb. Lors du déploiement, tous les 988 fichiers semblent être téléchargés, aussi parce que, en raison de ma connexion Internet lente, il faut un certain temps.

J'ai essayé de redéployer le tout dans un nouveau projet, après avoir terminé avec succès le tutoriel, et je rencontre toujours le même problème.

Répondre

0

Vous pouvez également utiliser l'option de gestionnaire pour inclure les fichiers statiques respectifs dans le code de l'application. De Handlers element:

application_readable

en option. Booléen Par défaut, les fichiers déclarés dans les gestionnaires de fichiers statiques sont téléchargés en tant que données statiques et ne sont servis qu'aux utilisateurs finaux. Ils ne peuvent pas être lus par une application. Si ce champ est défini sur true, les fichiers sont également téléchargés en tant que données de code afin que votre application puisse les lire . Les deux téléchargements sont imputés à votre code et à vos données statiques stockage resource quotas.

Comme ceci:

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

Après plusieurs heures de tests, j'ai finalement réalisé quel était le problème.

Dans GAE lors de la déclaration d'un certain chemin statique, il est alors interprété comme un chemin non-code. Tous les fichiers dans ce chemin ne sont donc pas accessibles par les scripts s'exécutant dans l'environnement PHP avec require ou include et ils ne sont pas affichés dans le débogueur de code déployé.

Pour cette raison, j'ai placé tous les fichiers statiques dans un sous-dossier (www), et les fichiers non statiques être required par des scripts PHP sous un autre sous-dossier.