2012-02-21 46 views
10

Estaba probando el Perfect Workflow, with Git, GitHub, and SSH, y tengo todo configurado, excepto ejecutar el comando git pull de php.Ejecutando git pull desde un script php

Cuando corro exec('git pull') me sale:

No se pudo crear el directorio '/.ssh'. La verificación de la clave de host falló. fatal: El extremo remoto colgó inesperadamente

Si lo funciono en el terminal (como root) funciona muy bien, pero necesito este gancho para trabajar desde la URL Post-Recibir (Github).

Si lo hago exec('whoami') obtengo apache.

Es un (dv) de mediatemple con CentOS.

+2

necesita hacer que el usuario del repositorio de git sea el mismo que el usuario con el que se ejecuta la aplicación web. –

+2

¿Y a qué se asigna el directorio de inicio del usuario 'apache'? 'ssh' está obteniendo el directorio raíz de la máquina como el directorio de inicio, y no puede escribir allí como el usuario' apache'. ('root' obviamente puede, por eso funciona) –

+1

Gracias por la respuesta chicos. Ben: ¿Cómo puedo hacer eso? Brian: no lo sé. No soy un chico sys/admin. Me estoy ejecutando en un mediatemple (dv) con CentOS – AFRC

Respuesta

8

Si desea apache (el usuario) para poder extraer desde git, tendrá que crear una clave ssh para apache, luego agregar eso a las teclas de solo lectura en github.

El flujo es algo como esto (ajustar a sus necesidades)

usermod -s /bin/bash apache 
su apache 
cd ~ 
ssh-keygen # work through the keygen dance (added a dash) 

Upload (tilde aquí se refiere a homedir de Apache) ~/.ssh/id_rsa.pub a github y dar acceso a cualquier Apache repos que necesita para tirar de.

A continuación, puede poner a prueba en el servidor de nuevo ing Do' a Apache y ejecutar el git pull

su apache 
cd ~/working-copy 
git clone my-project 

Una vez que está trabajando usted debería ser capaz de ejecutar un git tirar de través de PHP .

+0

Hola, quickshiftin. Gracias. Cuando ejecuto el comando 'chmod apache -s/bin/bash' obtengo: _chmod: no puedo acceder a' apache ': no ​​existe dicho archivo o directorio_. Lo siento, pero soy realmente nuevo en este servidor admin/unix. – AFRC

+1

Vaya, debería ser 'chmod -s/bin/bash apache'. Se trata de configurar el shell del usuario de apache para bash, de modo que pueda hacer apache y probar las operaciones de git antes de pasar a ejecutarlas a través de PHP; Lo cambiaré en mi respuesta. – quickshiftin

+0

Aún obtener chmod: no se puede acceder a 'apache': No existe tal archivo o directorio – AFRC