My webapp error 500

:fr:

Mon serveur YunoHost

Matériel: VPS acheté en ligne
Version de YunoHost: 4.3.6.2
J’ai accès à mon serveur : En SSH | Par la webadmin |
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non

Description du problème

Bonjour c’est de nouveau moi :slight_smile:

J’ai un bug assez embêtant, que je n’arrive pas à résoudre. Le code suivant fonctionne très bien en local, et sur un serveur apache de chez ovh. Mais quand je le mets sur ma webapp, j’ai une erreur 500.

<?php
if(isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['Mail']) && isset($_POST['don_valide'])){
  // Nous appelons l'autoloader pour avoir accès à Stripe
  require_once('stripe/init.php');

  $nom = $_POST['nom'];
  $prenom = $_POST['prenom'];
  $mail = $_POST['Mail'];
  $don = $_POST['don_valide'];
  $don_centimes = $don*100;

  // Nous instancions Stripe en indiquand la clé privée, pour prouver que nous sommes bien à l'origine de cette demande
  \Stripe\Stripe::setApiKey('ma_cle_stripe');


  // Nous créons l'intention de paiement et stockons la réponse dans la variable $intent
  $intent = \Stripe\PaymentIntent::create([
    'amount' => $don_centimes, // Le prix doit être transmis en centimes
    'currency' => 'eur',
  ]);

}else{
  header('location: ../index.php');
}


?>
<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link rel="stylesheet preload" as="style" type="text/css" href="styledon.css" media="only screen and (min-width: 891px)">
    <link rel="stylesheet preload" as="style" type="text/css" href="tablettestyledon.css" media="only screen and (min-width: 481px) and (max-width: 890px)">
    <link rel="stylesheet preload" as="style" type="text/css" href="mobilestyledon.css" media="only screen and (max-width: 480px)">
    <script src="https://js.stripe.com/v3/"></script>
    <title>Paiement</title>
  </head>
    <body>
      <div id="recap">
        <h3>Récapitulatif</h3>
        <p>Vous avez choisi de faire un don de <b><?= $don ?>€</b>.</p>
        <p>Afin de valider votre engagement, nous vous demandons de payer dès maintenant l'équivalent de 10 sommets. Si Thibault Cattelain n'en fait pas 10, vous serez remboursés de la différence. S'il en fait plus, vous recevrez un mail en fin de projet, vous finir de payer ce qui restera.</p>
        <h4>Veuillez saisir vos informations de paiement :</h4>
      </div>
        <form method="post">
          <div id="errors"></div>
          <input id="cardholder-name" type="text" placeholder="Titulaire de la carte" required>
          <div id="card-elements"></div>
          <div id="card-errors" role="alert"></div>
          <div id="boutonpaiement">
          <input type="button" name="retour" id="boutonretour" value="Annuler" onclick="retourarriere()">
          <input id="card-button" type="button" data-secret="<?= $intent['client_secret'] ?>" value="Valider le paiement">
          </div>
          <img id="paiementsecure" src="paiementsecure.jpg" alt="paiement sécurisés par Stripe" title="Paiements sécurisés par Stripe">
        </form>


        <script type="text/javascript">
          function retourarriere() {
              document.location.href = "01.php";
          }

          window.onload = () => {
            // On instancie Stripe et on lui passe notre clé publique
            let stripe = Stripe('ma_cle_stripeI');

            // et toutes sortes de scripts.
        </script>
    </body>
</html>

En cherchant un peu, le problème vient lorsque je crée l’intention de paiement :

  // Nous créons l'intention de paiement et stockons la réponse dans la variable $intent
  $intent = \Stripe\PaymentIntent::create([
    'amount' => $don_centimes, // Le prix doit être transmis en centimes
    'currency' => 'eur',
  ]);

Si je mets des echo "quelque chose"; avant, ils apparaissent bien, si j’enlève ces lignes, ma page apparait bien, mais avec ce code, nginx ne veut pas. Pourtant, le site marche très bien sur apache ! Pour l’instant, c’est sur apache que je le fais tourner. Je ne vois pas pourquoi nginx coince sur ce code…

Est-ce que c’est possible qu’il y ait un time-out ? Dans ce cas où le régler ? Il n’y a rien d’intéressant dans le fichier /etc/nginx/conf.d/mondomain.fr.d/my_webapp.conf :

#sub_path_only rewrite ^/$ / permanent;
location / {

    # Path to source
    alias /var/www/my_webapp/www/;

    # Default indexes and catch-all
    index index.html index.php;
    try_files $uri $uri/ /index.php?$args;

    # Prevent useless logs
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # Deny access to hidden files and directories
    location ~ ^/(.+/|)\.(?!well-known\/) {
        deny all;
    }


    # Execute and serve PHP files
    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php/php7.3-fpm-my_webapp.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param REMOTE_USER $remote_user;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }

    # Include SSOWAT user panel.
    include conf.d/yunohost_panel.conf.inc;
}

Des idées ?

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.