Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    7

    Exec() con Apache diverso da Php puro

    Ho creato una paginetta web per collegarmi in desktop remoto/vnc/ssh a diverse macchine della rete.

    Il php lancia il comando linux appropriato di connessione tramite exec().

    Tuttavia nell'esecuzione tramite apache l'output mi da dei messaggi strani (librerie non trovate o 'no version information available'), e il funzionamento dell'applicativo non sempre va a buon fine (a seconda del comando usato).

    Esempio : esecuzione di vinagre

    Codice PHP:
    exec("/usr/bin/vinagre"); 
    Se eseguita a riga di comando mediante :
    $> /opt/lampp/bin/php lanciaComando.php
    tutto funziona come atteso

    Se eseguito tramite pagina web apache ottengo :
    vinagre: symbol lookup error: /usr/lib/libcairo.so.2: undefined symbol: FT_Library_SetLcdFilter
    e a questo punto vinagre si blocca ed esce.
    Altri applicativi invece pur dandomi l'errore continuano.

    (in versioni precedenti di apache l'errore era simile , ma sulla libreria libxml2.so)

  2. #2
    Eseguito da shell, il comando usa come utente quello di shell (ovvero php gira con i permessi dell'utente che lancia il comando).
    Eseguito da webserver quindi gira con permessi dell'utente www-data (o quel che è l'utente http) e quindi può dare problemi, ovviamente, per questioni di permessi su file, librerie, cartelle eccetera...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    7
    Avevo già controllato, l'utente è lo stesso.

    In httpd.conf l'utente configurato è lo stesso, e a riprova di ciò
    eseguendo da apache shell_exec("whoami") ottengo l'utenza corretta.

    Non c'è alcuna differenza tra l'utente con php puro e apache. Temo si
    tratti di qualche percorso o variabile d'ambiente diversa che mi preclude
    la visibilità di determinate librerie, ma dopo 2 o 3 giorni, ancora non ho
    trovato soluzione se non abbandonare apache

  4. #4
    I log dicono qualcosa?
    Non tanto apache_error.log quanto i log delle applicazioni che vanno in errore...

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    7
    zero. Le applicazioni non lasciano log dopo questi errori, e non stento a crederlo essendo le librerie richieste propedeutiche al funzionamento anche del logging. L'unico log che ho è l'errorlog di apache che mi mostra esattamente la riga con l'errore di cui sopra.

  6. #6
    Aumenta la verbosità di errore di apache allora...almeno tentiamo di capire.
    Comunque sì il problema è al 90% di percorsi

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    7

    RISOLTO

    Era una libreria di apache, che aveva priorità su quelle di sistema anche sull'esecuzione dei comandi shell. Tuttavia tale libreria non era completamente sincronizzata alla versione presente nel sistema operativo e questo provocava errori e/o funzionamenti strani.

    Nella versione dell'ultimo XAMPP nello specifico ho dovuto fare la seguente operazione :

    sudo ln -s /usr/lib/libfreetype.so.6 /opt/lampp/lib/libfreetype.so.6.3.5

    Ovviamente prima di poter fare questo ho tirato via la libreria originale presente in xampp che aveva lo stesso nome. Avevo il dubbio che così apache mi desse storie , soprattutto all'avvio, ma non è stato così, ora tutto funziona a meraviglia.

    Grazie dei consigli.

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.