Server Değişim çalışmak değil komut İzinleri.

2 Cevap linux

İşte benim site taşınabilir değildir olduğunun kanıtıdır. Benim eski sunucuda mükemmel çalıştı bazı regex vardı. Ben şimdi yeni bir sunucuya siteme aktardığınız ve çalışmıyor.

$handle = popen('/usr/bin/python '.YOUTUBEDL.'youtube-dl.py -o '.VIDEOPATH.$fileName.'.flv '.$url.' 2>&1', 'rb');

while(!feof($handle))
{
    $progress = fread($handle, 8192);
    $pattern = '/(?<percent>[0-9]{1,3}\.[0-9]{1,2})% of (?<filesize>.+) at/';
    ///######Does not execute this if - no matches
    if(preg_match_all($pattern, $progress, $matches)){
    fwrite($fh, $matches[0][0]."\r\n");
    }
}

Kabuğundan çıktı böyle bir şeydir ve regex dosya boyu ve yüzde eşleşmesi gerekir.

[download]  56.8% of 4.40M at  142.40k/s ETA 00:13

Regex bu bir önceki sunucu üzerinde çalıştı ama değil. Neden? Ben bu nasıl hata?

Sunucularında fark bir önceki Fedora ve onun artık Centos olmasıdır. Ayrıca ben / bin / bash gibi kabuk belirtildi.

Bu bir değişikliğe neden olabilir PHP.ini şey var mı?

Lütfen yardım edin.

Update

(Sadece küçük bir örnek): $ ilerleme çıkışı bu

[download] 87.1% of 4.40M at 107.90k/s ETA 00:05 
[download] 89.0% of 4.40M at 107.88k/s ETA 00:04 
[download] 91.4% of 4.40M at 106.09k/s ETA 00:03 
[download] 92.9% of 4.40M at 105.55k/s ETA 00:03

Update 2

Bu regex çünkü çıkışında ekstra aralık başarısız olabilir?

Ayrıca farklı bir kabuk bir fark olur?

[SOLVED]

Bu çözüldü ve bir P gerektiren regex nedeniyle oldu - daha fazla bilgi için buraya bakınız: http://stackoverflow.com/questions/669178/does-this-regex-in-php-actually-work

2 Cevap

Çalışma ya da olmayan çalışma sunucusundan çıkış mi? Bu güvenli mod, ikinci etkin ve komut yürütmek reddediyor mümkündür. Daha fazla bilgi için bu sayfadaki Notlar bölümünü kontrol http://us.php.net/popen

Doğrulamak için, ve ben python komutunun çıkışını yerleştirilen yorumları görüyorsunuz, php script $ ilerleme değişkeni çıktı. Eğer cli dan python komutunu koştu veya php script kendi got o zaman verilen çıkış ise emin değilim. O (popen olmadığını belirlemek yardımcı olacaktır $ ilerleme değişken çıkarılırken python komut Ama eğer) gerçekten bu komutu yürütülüyor.

(Güvenli mod phpinfo (çalıştırarak etkinse Sen komut) söylemek mümkün olmalıdır)

Yoksa bu yapabilirdi

if( ini_get('safe_mode') ){
    print "safe mode on\n";
}else{
    print "safe mode off\n";
}

Ben PHP yapılandırmaları geçiş yaparken kırılma regexplerde duymadım, bu yüzden kırılma olabilir piton var merak ediyorum. Bu saçma bir soru olabilir, ama sizin exec hat bir terminalden çalıştığını kontrol ettikten?