2010-05-02 8 views
1

J'écris quelques fonctions en php utiliser pour interroger un svn exec(). Maintenant, j'essaie d'obtenir un chemin sur un référentiel svn avec la commande checkout. Lorsque je mets la commande "svn checkout http://core.wordress.org/tags/2.9.2/ dernière version" directement dans la console, cela fonctionne.exec() ne règle pas svn checkout

Mais quand je fais cela à partir d'un script PHP en utilisant exec(), comme ceci:

exec("svn checkout ".$myurl, $dir) 

il ne fonctionne pas.

Avez-vous une idée ??

+0

Vérifiez les autorisations à l'endroit où vous essayez d'écrire la copie vérifié? Le script PHP peut être exécuté comme un autre utilisateur que votre shell, et donc ne pas avoir les permissions d'écriture. – Amber

Répondre

0

Cela peut avoir diverses raisons.

  • L'utilisateur PHP fonctionne sous ne peut pas écrire dans le répertoire que vous voulez vérifier dans

  • Le dépôt SVN nécessite des informations de connexion qui ne sont pas mises en cache pour l'utilisateur PHP fonctionne sous

  • le processus de paiement SVN démarre, mais nécessite une entrée supplémentaire comme redoutée « voulez-vous accepter ce certificat » avec des certificats non signés.

Essayez d'ajouter 2>&1 à la commande pour rediriger ce flux vers stdout, et jeter un oeil à $dir. Utilisez également le paramètre $return_var pour exec().

Et comme Jacob a souligné, toujours utiliser escapeshellargs() pour vos arguments de commande.

+0

Merci pour les réponses. Je pense que l'utilisateur PHP n'est pas autorisé à écrire dans un répertoire. Vous savez comment y remédier ?? – bahamut100

+0

@bahamut Si vous avez accès au serveur, vous pouvez changer les permissions du répertoire. Si ce n'est pas le cas, vous pouvez essayer de faire un 'chmod 777' sur le répertoire de votre client FTP - notez simplement que cela rend le répertoire accessible en écriture pour tout le monde sur le serveur. –

+0

J'ai accès au serveur via SSH. Cependant: Quel est le répertoire à changer ???? – bahamut100