Çekme git ile shell_exec?

2 Cevap php

I am setting up a github account, to work on a small project with some friends. I would like to have my home machine able to do a git pull via php, so that we just have to call this small php file for the machine to be up to date.

Şu an itibariyle:

<?php
$output = shell_exec('git help');
echo "<pre>$output</pre>";
?>

Bu mükemmel çalışıyor ve ben sağ dizinde duyuyorum, çıktı almak, bu yüzden git çekme gibi iyi çalışması gerekir, ama asılı sayfa, hiçbir hata, hiçbir şey olsun.

Herhangi bir fikir?

EDIT : Birkaç kesinliklerini, repo 300K etrafında, bu komut satırından sadece birkaç saniye sürer, oldukça küçük. Ben de shell_exec ("dir") çalıştı ve ben sağ dizinde duyuyorum. Ben yeterince hassas olabilir eğer ben, Windows 7 x64 üzerinde xampp varsayılan yükleme çalıştırıyorum :)

2 Cevap

I set_time_limit() keşfetmek yanı sıra, emin git çekme bitmiyor yapma önermek durumunda yoluyla kullanıcı kestiğinde ignore_user_abort(). Hatta bir gigabit bağlı sunucudan çalışan, bazı depoları sadece klonlamak için bir süre alabilir.

Ayrıca, PHP'nin çalışma dizini kontrol, ve ensure PHP çalıştıran kullanıcı repo yazma ayrıcalığına sahiptir. Eğer CLI üzerinden bu koştu ve, kullandığınız olursa olsun, web sunucusu üzerinden erişildiğinde, PHP, uygun ayrıcalığı olmaksızın çalışan olduğunu onun iyi bir şans 'sadece çalışır' eğer.

Eğer chmod destionation 777 gibi dizin ve çalışırsa, suexec'i destek için apache / php derlemek gerekebilir çok iyi bir şans var. Bu durum ise, sadece 777 olarak bırakmayın lütfen :)

Her iki şekilde de, saati ve kullanıcı bunu çalışma olsun sonra bile, hala geçerli hususlar vardır durdurur.

Yani, benim kendi soruyu yanıtlamak için.

Aslında bir izin sorunu (teşekkürler tim), PHP CLI, komut dosyası çalışma oldu.

The problem was that the service php installation is using some strange permissions. So you/I need to start the PHP server via the command line (or in this case the Xampp control panel).

Şimdi bana veriyor, çalışıyor "Zaten up-to-date." Ben :) bekliyordu cevap