Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ajax nginx tracer les erreurs


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Ajax nginx tracer les erreurs
    Hello à toutes et à tous.

    Je suis sur un problème depuis plusieurs jours et j'en deviens fou ^^
    J'ai fait une interface web pour ma Raspberry, pour mon métier.
    Dans un premier temps, l'OS utilisé était Raspbian.

    Mais j'ai voulu me lancer dans la fabrication de mon propre OS avec Buildroot.

    Sous Rapsbian, tout fonctionnait bien.
    Sous mon OS perso, une bonne partie fonctionne, mais quand je fais appel a Ajax, gros problème.

    sous Raspbian mon serveur web était composé de Apache2 et php7.
    Sous mon OS perso, je suis passé à nginx et php-fpm ( toujours version 7).

    La conf de nginx :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    #user  nobody;
    worker_processes  1;
     
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
     
    #pid        logs/nginx.pid;
     
     
    events {
        worker_connections  1024;
    }
     
     
    http {
        include       mime.types;
        default_type  application/octet-stream;
     
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
     
        #access_log  logs/access.log  main;
     
        sendfile        on;
        #tcp_nopush     on;
     
        #keepalive_timeout  0;
        keepalive_timeout  65;
     
        #gzip  on;
     
        server {
            listen       80;
            server_name  localhost;
     
            #charset koi8-r;
     
            #access_log  logs/host.access.log  main;
     
            location / {
                root   /diagbox/web;
                index  intro.html;
            }
     
            error_page  550              /550.html;
     
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
     
     
     
     
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            location ~ \.php$ {
    		fastcgi_pass unix:/run/php-fpm.sock;
    		fastcgi_param SCRIPT_FILENAME /diagbox/web/$fastcgi_script_name;
    		include fastcgi_params;
            }
     
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #    deny  all;
            #}
        }
     
     
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
     
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
     
     
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
     
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
     
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
     
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
     
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
     
    }


    Le script javascript
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    //Constantes fonction reboot
    const scripts_reboot = '../scripts/reset_reboot/reboot.php'
    const mess_reboot = "La DiagBox redémarrera après avoir cliquer sur 'ok'. Tu pourras te reconnecter sur l'interface web d'ici 30 secondes environ <img src="images/smilies/icon_smile.gif" border="0" alt="" title=":)" class="inlineimg" />"
    const err_reboot = "Une erreur a empeché le redémarrage de la carte."
     
    function reboot(param1, param2) // param1 = smartphone ou tablette . param2 = oui ou non
    {
    	if (param1 === 'tablette')
    	{
    		switch (param2)
    		{
    			case 'oui':
    				alert(mess_reboot);
    					$.ajax({
    						url: scripts_reboot,
    					});
    				break;
     
    			default:
    				choix_menu('accueil', 'tablette'); // Fonction accessible grace a la page html
    				break;		
    		}
    	}
     
    	else if (param1 === 'smartphone')
    	{
    		switch (param2)
    			{
    				case 'oui':
    					alert(mess_reboot);
    						$.ajax({
    							url: scripts_reboot,
    						});
    					break;
     
    				default:
    					choix_menu('accueil', 'smartphone'); // Fonction accessible grace a la page html
    					break;		
    			}
    	}
     
    	else
    	{
    		alert(err_reboot);
    	}
     
    } //fin script reboot


    La partie du code html, le bouton faisant appel à ajax
    Code HTML :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="reboot">
    				<h2 class="h2_reboot"> confirmer le redémarrage de la Diagbox ? </h2>
    				<input id="reboot_yes_tablette" type="button" value="Oui" class="tablette_bouton" onclick="reboot('tablette', 'oui');" /> <!-- Bouton pour oui -->
    				<input id="reboot_no_tablette" type="button" value="Non" class="tablette_bouton" onclick="reboot('tablette', 'non');" /> <!-- Bouton pour non -->
    			</div>


    Je n'ai aucunes erreur qui remontent dans les logs.
    J'ai utilisé success, error et complete pour remonter les infos post ajax.
    Et ce sont les fonctions de success et complete qui apparaissent.

    J'ai du faire une méga boulette mais tellement immense que je ne la vois pas ^^.

    J'ai testé le script php directement en ligne de commande et il fonctionne.
    J'ai aussi introduit du code php dans la page html et il s'exécute.
    J'ai un autre script en javascript qui modifie l'apparence de la page et il fonctionne.

    Donc je vois pas mon erreur.

    Help me please

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Une hypothèse: Ajax nécessite des autorisations entre domaine, cela provient peut être de là ?
    As tu des autorisations Access-Control-Allow-Origin sur ta page appelée en Ajax ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  3. #3
    Candidat au Club
    Hello.
    Tout d'abord, je te remercie pour ta réponse.
    Et je pense que ton hypothèse est bonne.
    Le serveur est dans ma raspberry.

    J'ai ouvert les droits sur le dossier web(chmod 777 -R).

    J'utilise Ajax pour lancer des scripts PHP qui lancent des scripts SH.
    Quand le SH ne nécessite pas de droit(sudo), l'Ajax se passe bien, je m'en suis rendu compte a force de fouiller .

    Et vu que ça reste en local, j'ai essayé de donner les droits sudo sans mot de passe a l'utilisateur web www-data et également a nginx.
    Mais le sudo ne passe pas.

  4. #4
    Rédacteur/Modérateur

    Jette peut être un oiel par là https://enable-cors.org/server_apache.html
    le but étant que ta page cible de l'Ajax accepte l'appel
    tu sauras rapidement si c'est le cas en ajoutant à ta page un header qui autorise tot lemonde à l'appeler en ajax
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Header set Access-Control-Allow-Origin "*"


    ou plutôt sur linux
    https://linuxhint.com/cors_nginx/#:~...ed%20carefully.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

    réalisations :www.oxygen-translations.fr|www.saftair.fr| www.ouestisol.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
    Humour

  5. #5
    Candidat au Club
    Re
    Merci encore pour ton aide
    Mais toujours le même problème

    J'ai essayé d'intégrer le code PHP dans passer par de l'Ajax, directement dans mon code HTML.
    Lorsque le script PHP lance un script Bash sans sudo, par exemple un script Bash du type écho 'ok', ça passe.
    Mais il suffit que je rajoute sudo dans le script PHP ou Bash et ça bloque.
    J'ai une erreur me disant sudo: écho: Command not found.

    Pourtant sudo fonctionne en ligne de commande.
    J'ai essayé de mettre l'utilisateur de PHP et ningx dans mon fichier sudoers pour lui permettre de faire un sudo sans mot de passe mais en vain.

    J'ai changé les utilisateurs dans les fichiers de conf de php-fpm et ningx, j'ai mis www a la place de www-data.
    Un utilisateur que j'ai créé avec un groupe au même nom.

  6. #6
    Candidat au Club
    résolu après plusieurs jours de bataille

    https://superuser.com/questions/1079272/custom-script-run-with-sudo-command-not-found

    Le problème était sur le sudo, a priori un problème d'environnement.

###raw>template_hook.ano_emploi###