PHP: (exec SVN alt komutları ve seçenekleri kullanarak) "segment hataya" neden olur?

3 Cevap php

Ben bir proje üzerinde işimi devam edemez çünkü bu gün beni tahrik şey var. Ben başka bir bilgisayara geçiş ettik ve birlikte güzel çalışma PHP ve yürütülebilir svn alamıyorum :)

$output = "";  
$value = "";  
exec("/opt/subversion/bin/svn info --username something --password something --non-interactive <REPO_URL> 2>&1", $output, $value);  

var_dump($output);  
var_dump($value);

Çıktı:

array(0) { } int(139)

139 = Segmentasyon hatası, ama bunu neden olabilecek hiçbir ipucu var çünkü çok yardımcı olmuyor. Doğrudan bir cazibe gibi terminali eser kod aynı parça Koşu, ancak PHP exec yoluyla aynı şeyi çalışırsa bir sorun var ().

Ben kimlik doğrulama dışarı şerit, ben doğru çıktı (kimlik doğrulama için istek) olsun.

Chmod-ing 777 için yürütülebilir Subversion'ı herhangi bir fark görünmüyor.

Herhangi bir kullanım varsa, Mac OS X 10.5.8, PHP 5.2.11 ve Apache 2.2.13 bulunuyor

3 Cevap

exec() ile çalışmıyor < ve> yönlendirme operatörleri: Bu bir kabuk işlevleri vardır. Kolay çözüm yerine system() çağırmaktır.

Ben de UNIX Windows sunucusundan benim PHP uygulaması taşıdıktan sonra benzer sorunlar vardı. Daha spesifik olarak, ben shell_exec yoluyla koşuyordu svn komutu birkaç () boş çıktı döndü.

Benim durumumda, sorun. Svn dizinin UNIX izinleri ile ilgili ve dosyaları içeriyordu. Benim svn checkout bir standart kullanıcı hesabının sahibi oldu. Svn dizinine ve bu gibi orada önemli dosyaları (yazma erişimi yoktu.: (Apache işlemi yoluyla) PHP komut dosyası shell_exec koştu ama ne zaman () bu yüzden farklı bir hesap (kimse kimse) kullanarak yaptım komut. ) dosyayı kilitleyin.

. Benim için çözüm Apache sürecinin (.: Kimse svn chown-R) olarak aynı gruba ait svn dizinleri / dosyaları yapmak için chown komutunu kullanmak oldu.

Sorular bir çift:

  1. Eğer "kimlik doğrulaması dışında şerit" kodu için kullandığınız tam php nedir?

  2. Kullanıcı adı veya şifrenizi kabuk veya php karıştırmayın olabilecek herhangi bir "komik" karakterler içeriyor mu? (Tırnak, backticks, vb)