Bu beni deli ediyveya. Benim PHP web uygulaması için bir pencere kutusunda bir komut satırı deyimini yürütmek çalışıyveyaum. Bu Windows XP, IIS5.1 üzerinde çalışıyveya. Web uygulaması gayet iyi çalışıyveya, ama belirli bir contactenated değişken ile çalışmak) (exec @ alınamıyveya. Benim komut inşaat bu gibi görünüyveya:
$cmd = ($config->svn." cat ".$this->repConfig->svnParams().quote($path).' -r '.$rev.' > '.quote($filename));
Bu komut aşağıdaki dize oluşturduğunda, yukarıda olduğu gibi çalışmaz:
svn --non-interactive --config-dir /tmp cat "file:///c:/temp/test/acccount/dbo_sproctest.sql" -r 1 > "C:\Inetpub\sites\websvn\temp\wsv5B45.tmp"
Ben / benim kendi komut satırına bu kopyalayıp yapıştırın, bu iyi çalışıyveya.
Eğer yerine değişkeni ile eklerken çok aynı yol, çalışır ben sert kodu! Ben dosya adı tırnak ile ve olmadan denedim. Ben tüm komutuyla tırnak ile ve olmadan denedim. Ben diğer dizinleri denedim. I () exec bir çıkış Paramtre geçen denedim, ve boş geri geliyveya (Array ()). Ben bir dosyaya komut hata akımının çıkış yönlendirme denedim, ve bu hata çıktı dosyası oluşturulur geçmez.
Ben belki bir concieve olabilir tek şey exec () sessizce başarısız olmasıdır. Ben burada yanlış yeryüzünde ne yapıyveyaum? Ben zveya kod Eğer dosya yolu, aynı dir yapısını ve dosya adını kullanarak, iyi çalışıyveya. Ben yapmazsam, öyle değil.
Belki dosya yolu eğik çizgi () düzgün kaçtı olmak değil, ama ben tek tırnak ile elle yapmak zaman kaçış dizileri kabul edilmez?
UPDATE:
Ben exec kapalı @ aldı ve hala herhangi bir hata göremiyveyaum.
Ben hala, SVN hiç şans tam yolunu verdi. Bu komut çok uzun elle kedi için dosya hedef belirlemek gibi olmayan tam yolu SVN ile daha önce iyi çalıştı unutulmamalıdır.
Update 2: RE: Kieth
Ben hem deneyerek exec arıyveyaum:
exec($cmd);
veya
exec($cmd, $out);
Benim php.ini zaten safe_mode = 0 vardı.
I added errveya_repveyating(E_ALL); and didn't see anything new
If I echo (veya print_r) my exec call, I am not actually seing anything
If I echo (veya print_r) my exec call when included an output var, I get an empty arr
Update 3
Ben escapeshellcmd hem denedim ve boşuna (iyi bir fikir olsa da) escapeshellarg.
Ben dosyayı çağırarak aracılığıyla oluşturulan ediliyor eklemek gerekir
tempnam("temp", "wbsn");
The fact that it wveyaks just fine if I manually specify the string instead of letting it be generated by tempname seems to suggests that the source of the problem, but I can't figure out how. I did a comparison of the manual string with the one generated, and it came back as a match.