Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Lettura file con AJAX su Linux

    Ciao a tutti,
    ho un problema con un banalissimo script di AJAX.
    In pratica devo semplicemente leggere un file:

    Codice PHP:
    var XMLHttpRequestObject false;
    XMLHttpRequestObject = new XMLHttpRequest();

    <!--
    function 
    loadHostFile(dataSourcedivID)
    {
        if(
    XMLHttpRequestObject) {
            var 
    obj document.getElementById(divID);

            
    XMLHttpRequestObject.open("GET"dataSourcetrue);
            
    XMLHttpRequestObject.onreadystatechange = function()
            {
                if (
    XMLHttpRequestObject.readyState == && XMLHttpRequestObject.status==200) {
                    
    obj.innerHTML '<textarea name="hostfilecontent" cols="75" rows="10" id="hostfilecontent">'+XMLHttpRequestObject.responseText+'</textarea>';
                }
            }
            
    XMLHttpRequestObject.send();
        }

    Eseguendolo in locale (macchina Win) utilizzando ActiveX nella creazione dell'HttpRequest funziona senza problemi.
    Quando gira sul server (macchina RHEL) in ogni readyState ha uno status 404, come se il file non esistesse. Questo con qualsiasi file si provi.

    Qualcuno mi può aiutare?
    Grazie in adv

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Chiama direttamente, scrivendola sulla barra degli indirizzi del browser, la risorsa sul server (dataSource) e vedi cosa risponde...

    ciao

    ps: ma sul server esegui pagine ASP?
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Accedendo via HTTP al file (/etc/hosts) mi torna un 404 ma questo è normale perchè modificare l'httpd.

    Lo stesso errore nello script me lo da però anche se tento di aprire un file di testo nella cartella pubblicata, che invece s apre via HTTP.
    Ho provato anche a dare come permessi 777 al file e a rendere apache.apache proprietario ma non cambia niente.

    L'applicazione è in PHP e CGI.

  4. #4
    ma qual'è il path del file?
    I DON'T Double Click!

  5. #5
    Il path è /etc/hosts

    Facendo altre prove ho notato che se copio il file nella stessa cartella della pagina che esegue lo script me lo apre senza problemi. Pare che l'oggetto HttpRequest, anche se gli passo il path completo, cerci sempre nella cartella dove viene eseguito lo script.

    A questo punto avevo pensato di creare un link simbolico al file da aprire nella cartella dove viene eseguito lo script. Trova il file ma dice che non ho i permessi per accedervi, anche se il link è in 777 (controllo completo).

    Un'altra anomalia è questa:
    il file che devo aprire è /etc/hosts
    il file che esegue lo script è /usr/share/nagios/html/nagiosQL/admin/tshostfile.php

    Copiando il file hosts in /usr/share/nagios/html/nagiosQL/admin/ e settando dataSource="hosts" lo apre tranquillamente.
    Al contrario se a dataSource assegno il path completo (/usr/share/nagios/html/nagiosQL/admin/hosts) non mi trova il file.



  6. #6
    beh, ma il file PHP che legge il file che errore ti da? Probabilmente leggerlo lo può fare, ma non potrà scriverlo
    I DON'T Double Click!

  7. #7
    Il PHP non da nessun errore.

    Semplicemente richiamo la funzione in questo modo:

    Codice PHP:
    var XMLHttpRequestObject false
    XMLHttpRequestObject = new XMLHttpRequest(); 

    <!-- 
    function 
    loadHostFile(dataSourcedivID

        if(
    XMLHttpRequestObject) { 
            var 
    obj document.getElementById(divID); 

            
    XMLHttpRequestObject.open("GET"dataSourcetrue); 
            
    XMLHttpRequestObject.onreadystatechange = function() 
            { 
                if (
    XMLHttpRequestObject.readyState == && XMLHttpRequestObject.status==200) { 
                    
    obj.innerHTML '<textarea name="hostfilecontent" cols="75" rows="10" id="hostfilecontent">'+XMLHttpRequestObject.responseText+'</textarea>'
                } 
            } 
            
    XMLHttpRequestObject.send(); 
        } 
    }

    [.....]

    <
    input name="loadHFile" type="button" id="loadHFile" value="{LOAD_HOSTFILE}" onClick="loadHostFile('/etc/hosts','hostfile')"
    Quando clicco sul pulsante nella text area mi stampa il messaggio di errore di file non trovato.

    Ad ogni modo ho risolto.
    In pratica il path che assegno al dataSource aggiunge automaticamente al valore che gli passo il percorso della cartella pubblicata in httpd (/usr/share/nagios/html/) e il percorso della cartella dove si esegue lo script (nagiosQL/admin/).
    Quindi il percorso che voglio passare io /etc/hosts viene trasformato in /usr/share/nagios/html/agiosQL/admin//etc/hosts.

    Per correggere questa cosa come path devo passare ../../../hosts. Non ha il minimo senso a mio parere visto che risulterebbe /usr/share/nagios/hosts, ma così funziona quindi mi va bene comunque.


  8. #8
    Originariamente inviato da codesurfer
    Il PHP non da nessun errore.
    ...
    Quando clicco sul pulsante nella text area mi stampa il messaggio di errore di file non trovato.
    E questo, secondo te, sarebbe nessun errore?!?

    Ad ogni modo ho risolto.
    In pratica il path che assegno al dataSource aggiunge automaticamente al valore che gli passo il percorso della cartella pubblicata in httpd (/usr/share/nagios/html/) e il percorso della cartella dove si esegue lo script (nagiosQL/admin/).
    Quindi il percorso che voglio passare io /etc/hosts viene trasformato in /usr/share/nagios/html/agiosQL/admin//etc/hosts.

    Per correggere questa cosa come path devo passare ../../../hosts. Non ha il minimo senso a mio parere visto che risulterebbe /usr/share/nagios/hosts, ma così funziona quindi mi va bene comunque.
    Scusa, ma nel file PHP se provi a mettere fopen("/etc/hosts", 'r'); ti da errore file non trovato?
    I DON'T Double Click!

  9. #9
    il file PHP che legge il file che errore ti da?
    nessuno


    E questo, secondo te, sarebbe nessun errore?!?
    certo che è un errore ma non di PHP.


    nel file PHP se provi a mettere fopen("/etc/hosts", 'r'); ti da errore file non trovato?
    lo apre senza problemi. Il problema stava nella costruzione del path del XMLHttpRequest

  10. #10
    'spetta un po'... tu mi vuoi dire che stai cercando di ottenere un file in /etc tramite Web?
    I DON'T Double Click!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.