2010-06-15 11 views
1

Hé les gars, j'ai une commande php exec qui fonctionne sur mon serveur linux distant mais pas sur mon serveur local windows (WAMP package). Je veux vraiment créer un poste de travail identique afin que je puisse tester localement et ensuite mettre à jour mon serveur distant. Si quelqu'un a des suggestions ou des solutions autres que la conversion à Linux, je l'apprécierais vraiment.Est-il possible d'exécuter exec php via cygwin?

<?php 

$safe_path = escapeshellarg('fake-virus.txt'); 

$command = '/usr/bin/clamscan --stdout ' . $safe_path; 

$out = ''; 

$int = -1; 

exec($command, $out, $int); 



echo $int; 



if ($int == 0) { 

    // all good; 

} else { 

    echo 'o no';// VIRUS!; 

} 





?> 
+0

Avez-vous essayé de lancer php.exe à partir du répertoire php dans C: \ wamp? – meagar

+0

Je ne comprends pas très bien, ce que j'essaie de faire est de garder la même commande pour ne pas avoir à changer de code pour tester localement – Scarface

Répondre

1

Je veux vraiment créer un poste de travail identique pour que je puisse tester localement, puis mettre à jour mon serveur distant

Installation cygwin est la mauvaise façon d'aller à ce sujet. Il suffit d'utiliser virtualbox, que vous pouvez obtenir à partir de here, et exécuter une machine virtuelle Ubuntu. Beaucoup plus facile (et plus agréable).

+0

semble être une bonne idée, devrai-je utiliser xampp server lol? Cela a été mon problème avec PDO. – Scarface

+0

Utilisez le serveur de votre choix. Apache est généralement le choix le plus commun, cependant. –

+0

merci john l'apprécie – Scarface

0

Utilisez « su » il fonctionne très bien pour moi quand faire des trucs frais cross OS

shell_exec('su Administrator -c "cmd/script"'); 

Son pas si difficile à exécuter Cygwin avec Apache PHP et plus encore. Voici un tutoriel assez simple cygwin-apache-php Amusez-vous!

-1

Au moins dans un cas, j'ai pu utiliser shell_exec() de php de wamp (sur windows :-)) via cygwin. J'ai dû installer procps ou quelque chose dans l'installateur de cygwin pour avoir une meilleure commande de toutes sortes dans cygwin. Ensuite, j'ai pu utiliser wamps php shell_exec pour exécuter cette commande supérieure Cygwin en utilisant la suggestion Kishans dans http://php.net/manual/en/function.shell-exec.php:

<?php 
echo $result = shell_exec("C:\cygwin64\bin\bash.exe --login -c '/cygdrive/c/cygwin64/bin/top.exe --b -n 1'"); 

?> 

/////////////////
remarques de Kisha citées :

Si vous êtes sur windows et a Cygwin, vous pouvez exécuter tous vos Cygwin en utilisant shell_exec() comme suit:

<? 
$result = shell_exec("C:\cygwin\bin\bash.exe --login -c '/cygdrive/c/cygwin/bin/convert.exe --version'"); 
print($result); 
?> 

la clé est l'option « --login » qui ajoute tout le nécessaire cygwin binaire commun et li chemins brary à $ PATH. Sans cette option, certains des binaires cygwin qui pointent vers d'autres bibliothèques (comme les binaires ImageMagick qui pointent vers X11) ne fonctionneront pas et vous pourriez voir des erreurs comme "cygX11-6.dll introuvable, impossible de démarrer convert.exe"