Je ne peux pas écrire de fichiers dans mon répertoire Apache Webserver. J'utilise CentOS 7. Je suis en train d'exécuter des commandes git à partir d'un fichier PHP en utilisant exec:Ecriture de fichiers (en exécutant des commandes git) à partir de PHP sur CentOS7
exec("/usr/local/bin/git -C ../myRepo fetch 2>&1", $output, $exec_return_value);
En imprimant la sortie, je vois que l'erreur manifeste comme:
error: cannot open .git/FETCH_HEAD: Permission denied
J'ai découvert (avec l'aide de ce blog: http://jondavidjohn.com/git-pull-from-a-php-script-not-so-simple/) que c'est "attendu" car Apache va s'exécuter en utilisant un autre utilisateur que ce que j'utilise via ssh. Je dois donc m'assurer que mes permissions permettent à cet utilisateur d'avoir un accès en écriture.
Je décidai que mon installation d'Apache exécute comme un utilisateur nommé « apache » en imprimant la sortie dans mon fichier php:
exec("whoami", $debugOutput, $debugRetVal);
J'ai également mis en place de SSH comme recommandé dans ce même lien. Mais malheureusement, j'obtiens toujours la même erreur dans le fichier PHP:
error: cannot open .git/FETCH_HEAD: Permission denied
La chose qui m'a vraiment jeté est que je n'ai pas de problèmes d'autorisations lorsque je lance qu'Apache de ma session ssh en utilisant:
sudo -u apache /usr/local/bin/git -C ../myRepo fetch
L'utilisateur "apache" a apparemment des autorisations différentes lorsqu'il s'exécute à partir de PHP. Quelqu'un peut m'aider à trouver la solution?
Vous utilisez un chemin relatif ('../). Êtes-vous sûr que votre commande PHP s'exécute dans le même répertoire que le sudo de ligne de commande que vous avez essayé? Essayez avec le chemin absolu et/ou affichez pwd avant de lancer git pour voir si c'est le problème. –
Lorsque j'imprime "ls -la" contre exactement le même chemin relatif depuis je vois tous les fichiers, et le fait que "apache" possède les fichiers. Donc, il s'exécute à partir de l'endroit que je m'attends. – Josh