Bir tarayıcı üzerinden bir php komut dosyası bir svn update çağırıyor çalışmıyor

6 Cevap php

Hey guys, I have two scripts.

  1. bir güncelleştirme çalışan ve ('svn update') ve shell_exec ('svn st') shell_exec çağırıyor
  2. Bir mysqldump shell_exec ('mysqldump params') çalışıyor

Svn komut update komutu, svn st yazdırırken sonuçları koşma değil ama svn update edilir

I tried to declare parameters when calling svn update eg 'svn update ' . dir . ' --username myuser --password mypasswd --non-interactive'; -- still nothing Played with most of the params

If this is something related to binaries/permissions/groups, I don't see it. The mysqldump command works fine and is producing a file, so why isn't the svn updating the filesystem?

PHP çekirdek SVN sınıfları kullanarak tavsiye etmeyiniz. Bu bir seçenek değil, ben sunucu üzerinde tam denetim yok ve modül mevcut değildir.

Yardımlarınız için teşekkürler,

-Hbt

PS: Burada söz important şey. Komut satırı üzerinden denilen komut works. Bir web tarayıcısı üzerinden çağrıldığında sadece başarısız.

6 Cevap

OK. I got it. It is an issue with permissions. The .svn directory must have the right permissions because the svn update command is using those directories to write stuff.

So! ---Make sure you run all chmod commands as sudo or root----

  1. . svn dizininde bir chmod 777 çalıştırın
  2. Komut satırı üzerinden bir svn update çalıştırın
  3. komut dosyası çağırın

Bir şey ise. Hepiniz için yinelemeli chmod 777 çalıştırmalısınız. Svn dizinleri sonra başka bir svn update çalıştırın

Hala hiçbir şey?

Make sure you don't have two svn clients In my case, the svn client used by the UI is different from the svn (command line) If you have two clients, make sure they are running the same version Or update your script to call the client directly.

Hala hiçbir şey?

Run a chmod 777 -R * svn update and try again

Eğer izinler başka bir dizi ile çalışması durumunda, lütfen bana bildirin. Ben 777 ideal olmadığını biliyorum, ama daha düşük bir şey çalışmak yapamazsınız.

Tekrar teşekkürler çocuklar.

Eğer denediniz PECL svn extension? Bunun için shell_exec kullanmak gerekmez.

Dönüş değeri, kullanım standart hata almak için:

shell_exec ('2> & 1 svn update ')

Eğer sonunda 2> & 1 koyarsanız çalışmıyor

Ben de aynı sorunla karşılaşmış ama bile değil izinleri bunu çözdü.

Burada diğer tavsiye bazı dayanarak, ben yaptım:

<?php
echo shell_exec('2>&1 svn update /path/to/checked/out/directory/ --non-interactive');

Ben daha sonra bir hata benim tarayıcıda dökülüyor var:

svn: warning: Can't open file '/root/.subversion/servers': Permission denied
svn: OPTIONS of 'http://my.svn.server/svn/project/trunk': authorization failed: Could not authenticate to server: rejected Basic challenge (http://my.svn.server)

Benim web sunucusu kullanıcı / root erişmeye çalıştı ama ben ekleyerek herhangi bir izinleri değiştirmeden sorunu sabit emin değilim neden - config-dir svn yukarı komutu:

<?php
echo shell_exec('2>&1 svn update /path/to/checked/out/directory/ --non-interactive --config-dir /path/to/my/home/.subversion');

* İlk çıkış komut satırında yapıldı çünkü / benim / home / .subversion var etmek / o / yolunu not

Evet, sorun. Svn dizini ile izinleri olduğunu.

PHP olarak çalışan kullanıcı için doğru izinlere sahip olduğundan emin olun (benim durumumda bu apache idi) ve chmod bunu 775 için.

Bu izin sorunu olabilir: Bir web tarayıcısı üzerinden denilen betik bu nedenle salt okunur erişimi, svn çalışma dizinin sahibinin daha farklı bir kullanıcı altında çalışır. Salt okunur erişim svn status yürütmek için yeterli olmayabilir, ama svn update için (bu durumda gibi bir hata olması gerekiyor ama "svn: Can't open file '.svn/lock': Permission denied").