Whoami ne retourne rien

bonjour,

je suis nouveau sur le forum et novice sur debian6.
j’ai une configuration apache2 + mysql5.1 + php5 (3xxx)

j’ai un script a executer coté client qui permet de voir certains processus. si le processus n’existe plus, c’est que le script est arrêté, alors, j’ai un script qui permet de le relancer.

ces scripts sont sur /var/www en tant que www-data (0777)

voici un extrait du script pour tester les pid :

[code]$pid19=exec(‘pgrep uctcanyon’);
if(empty ($pid19))
{
?>

Serveur Canyon Dedicated<?php echo $pid19;?>KO <?php }else{ ?>Serveur Canyon Dedicated<?php echo $pid19;?>OK <?php } ?>[/code]

un extrait du script pour relancer un script arrêté :
avec un include de variables telles que $xstate = ‘pgrep php_compet_php5’; (un exemple)

[code]<?php
$pid=exec("$state");
if(empty($pid)){
?>

<p>echec de redemarrage du serveur, veuillez refaire une tentative depuis l'étape 1.</p>
<ul><li><a href="main.php?serveur=ok">Retry Step 1</a></li></ul>
	
	<?php
	}else{
		?>
		<p>Le serveur a été demarré avec succès</p>
		<?php
		
		$xs=exec("$xstate");
		if(empty($xs)){
			?>
			<p>echec de redemarrage de xaseco, veuillez refaire une tentative depuis l'étape 2 de Xaseco Reboot svp</p>
			<ul><li><a href="main.php?xaseco=step2">Xaseco etape 2</a></li></ul>
			<?php
			}else{
				?>
				<p>Le processus Xaseco a été demarré avec succès</p>
				<?php
				}
		}

?>
[/code]

tous ces scritpts ne fonctionnent pas.

j’ai regarder sur google mon ami depuis plusieurs jours et en essayant un simple script :

<?php echo exec('whoami'); ?>

j’ai droit a une page blanche. en clair, le serveur apache ne sait pas qui lance le script !

je me pose la question et je cherche une réponse … quel(s) paramètres dans les diverses configurations me permettront de faire en sorte que apache puisse effectuer ces scripts sous l’utilisateur www-data !

pour info, je n’ai pas d’autres utilisateurs…
et les soucis de sécurité ne sont pas vraiment des soucis (rien de confidentiel ni de vital ^^ … au pire… cela fera l’objet d’un autre post :slightly_smiling:

merci d’avance pour votre aide.

spyker

suis pas sur que cela inspire grand monde … faut dire que… c’est pas passionnant non plus comme panne alors …

allez … un petit effort … on y croit ! on va résoudre ce petit souci de rien du tout pour des pro comme vous :slightly_smiling:

Bon allez:

  1. Vérifies le PATH, mieux met /usr/bin/whoami au lieu de whoami

  2. Utilise la sortie en tableau plutôt:

[code]<?php
echo exec(’/usr/bin/whoami’,$sortie);

et là affichage du tableau $sortie

?>[/code]

Est-ce que php est configuré pour afficher les erreurs ?
Voir paramètres display_error et error-reporting dans le fichier php.ini.

Qu’indiques les logs d’erreur apache ?

tout d’abord … merci au Dieu du clavier et à la très bavarde ^^ avec ça … je suis très bien entouré :115 me sens plus tout seul … :041

alors voilà :

[code]echo exec(’/usr/bin/whoami’,$sortie);

[/code]
me sors une page blanche. pour contrôler, j’ai rajouté un var_dump … et à la sortie : array(0) { }

ensuite mon php.ini :
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED

avant d’activer la display_errors, j’ai ajouté au script de test ceci :

exec('/usr/bin/whoami',$sortie); var_dump($sortie); echo "<br/>"; echo($var);

affichage à l’écran :
array(0) { }
mais pas d’erreur de constatée…

après modification du php.ini avec display_errors à on :
affichage à l’écran :
array(0) { }
Notice: Undefined variable: var in /var/www/cron/spyke.php on line 5

il y a bien une erreur (normal).
je retire donc mon erreur volontaire et …
affichage à l’écran :
array(0) { }

merci encore à vous ^^ j’attends la suite avec impatience …

aucune erreur dans les logs d’apache …

++ spyker

Un troisième argument donné à exec renvoit le code de retour de la commande.
Que donne

exec(‘usr/bin/touch /tmp/gabeu’);

Est ce que le fichier /tmp/gabeu est crée?

enfin rajoute 2>&1 à la fin de la commande pour voir un éventuel message d’erreur et regarde /var/log/apache2/error.log pour les messages d’erreurs.

alors,

aucun fichier ni repertoire gabeu de créé.
2>&1 a la fin de la commande n’a pas de crée de message d’erreur dans les logs apache.

tu y vois un peu plus clair ? moi … pas du tout ^^

Pour une raison que j’ignore la commande n’est effectivement pas crée. Il y a soit des pbms de droits (quels sont les droits de ton utilisateurs? Ta partition est elle montée de manière particulière? …). Pour cela regarde les logs de /var/log/apache2/*error.log, tu auras sans doute une indication

la partition est correctement montée.
pour reprendre l’historique et si je peux t’aider à m’aider (j’aime bien cette formule tiens ^^) et bien je dirais que l’on peut même appliquer la méthode Ishikawa en procédant par élimination :

le repertoire var/www fonctionnait normalement jusqu’a ce que j’ajoute un nouvel user avec services web.
les droits sur le repertoire var/www étaient et sont toujours 0777.
le propriétaire et groupe de var/www est root (pas grave ça… comme je l’ai dis plus haut).
le propriétaire et groupe de ses sous-repertoire est www-data.
les scripts avant l’ajout du user fonctionnaient correctement (www-data était reconnu).
Depuis l’ajout puis le retrait du user, apache ne reconnait plus aucun user (ni root, ni www-data).
C’est sans doute pour cette raison que les scripts (bash… pas php) ne sont plus executés et qu’ils ne présentent pas d’erreur.

donc… pour avancer, quelles sont les configurations qui sont modifiées lors de la création ou d’un retrait d’un user ? est-ce que le virtual host par défaut est impacté par cette action ? est-ce que les directives sont modifiées ? réduites ?

je cherche, nous cherchons … pas si anodin que cela cette histoire ^^

merci,

spyker

Ton serveur est configuré comment ? apache2 + php5 en module ? ou tu as du suexec/suphp/cgi/fcgi/fpm ?
Apache est bien lancé en tant www-data ?
safe_mode activé ?
openbase_dir activé ?

le kfé était excellent ^^ monsieur le bavard :wink:

alors :
safe_mod est a OFF
open_basedir pas activé (commenté)

pour ce qui est d’apache, voir le apache2handler ci joint, c’est www-data
46.105.124.60/php.php

++ spyker

Bavard et non bavarde :wink:

voir edit du post précédent :wink:

petit up ^^

a l’aide svp ^^

Est-ce que cette commande lancé en root sur le serveur te retourne bien www-data ?

Et tente de modifier/ajouter ce paramètre dans /etc/php5/conf.d/suhosin.ini :

Ensuite restart apache pour la prise en compte.

je fais ça ce soir … suis au boulot là ^^

merci…

++ spyker

Essaye le café avec un star shaker, Spyker …

ouais … vais en avoir besoin je crois :wink:

Rajoute éventuellement une palette de Doliprane 1g :mrgreen:

voilà voilà ^^ a plus de café ni de star shaker a me mettre dans le gosier …

root@ks224523:~# su www-data -s /bin/bash -c whoami
root@ks224523:~#

restart apache2 apres avoir ajouté suhosin.simulation = on

root@ks224523:~# /etc/init.d/apache2 restart
Restarting web server: apache2[Thu Oct 04 17:34:06 2012] [warn] module php5_module is already loaded, skipping
… waiting [Thu Oct 04 17:34:07 2012] [warn] module php5_module is already loaded, skipping

ça vous cause un peu ?