Domanda

Sto lavorando ad un'applicazione che funziona localmente su una macchina Fedora 10 tramite PHP e Apache. Dipende da un processo che viene eseguito in background.

I superiori vogliono poter avviare / arrestare / riavviare il processo, tramite il browser. Stavo cercando di farlo funzionare facendo in modo che PHP facesse chiamate al sistema usando exec () e shell_exec, ma non sembra funzionare.

Quando provo ad avviare il processo usando " exec ('processName') " non succede nulla.

Quando provo a usare " exec ('killall processName') " ;, SELinux inizia a spuntare costantemente avvisi che il processo era permesso (perché l'ho messo in modalità permissiva), tuttavia in realtà non uccide il processo ! Ma questo sembra continuare anche dopo che la pagina è stata caricata completamente!?!?

SONO in grado di chiamare un altro script in modo simile: " exec ('/ var / www / cgi-bin / ControlProgram START') " ;. Quindi non sono davvero sicuro di quali siano le principali differenze tra le due chiamate / comandi.

Ho anche inserito la chiamata di script nel file /etc/rc.local per far eseguire lo script all'accesso. Tuttavia, sarò in grado di uccidere questo script da PHP dal momento che è gestito da ... il sistema?

Non sono un guru quando si tratta di autorizzazioni / SELinux, quindi non risparmiate sui dettagli cruenti! Grazie in anticipo!

È stato utile?

Soluzione 2

Credo di aver trovato il problema. Non sono ancora esattamente sicuro di quale sia il problema, ma sembra che abbia qualcosa a che fare con le autorizzazioni di file / directory. Quando ho spostato gli script nella mia directory / var / www / html, gli script sono stati eseguiti. Li ho spostati in / var / www / cgi-bin e funzionano anche lì. Quindi potrebbe essere qualcosa in cui apache non può eseguire script esterni alla directory / var / www, o almeno non può farlo direttamente. Grazie per l'aiuto!

Altri suggerimenti

Se hai il controllo amministrativo su questo sistema, vorrai controllare la configurazione di PHP (assicurati che sia il profilo di configurazione per il server web).

Safe_Mode impedirà a PHP di eseguire qualsiasi cosa al di fuori di una determinata cartella. In un ambiente di hosting condiviso, questo di solito significa che puoi eseguire solo cose relative alla tua cartella home / www - che sembra essere il caso in base alle tue note.

Sembra che i permessi unix della vecchia scuola e il funzionamento di apache. Ricordo (anche se è passato del tempo) che Apache è attento a ciò che eseguirà. Controlla di nuovo i tuoi ottali.

Per verificare che non sia SELinux puoi disabilitarlo invece di metterlo in permissivo. sebbene ciò provocherà una rietichettatura del file system (o dovrebbe). A quel punto i tuoi attributi estesi con i contesti di SELinux potrebbero uscire di testa e causare problemi a SELinux una volta applicati nuovamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top