Вот доказательство того, что мой сайт не переносится. У меня было некоторое регулярное выражение, которое отлично работало на моем старом сервере. Теперь я перевел мой сайт на новый сервер, и он не работает.
$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"); } }
Выход из оболочки – это что-то вроде этого, и регулярное выражение должно соответствовать размеру файла и проценту.
[download] 56.8% of 4.40M at 142.40k/s ETA 00:13
Регулярное выражение работало на предыдущем сервере, но не на этом. Зачем? Как я могу отладить это?
Разница в серверах заключается в том, что предыдущей была Fedora и ее теперь Centos. Также я указал оболочку как / bin / bash.
Есть ли что-нибудь в PHP.ini, которое может вызвать изменение в этом?
Пожалуйста помоги.
Вывод $ progress – это: (всего лишь небольшая выборка)
[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
Может ли это регулярное выражение выйти из строя из-за дополнительного интервала в выходе?
Также изменилась бы другая оболочка?
Это было решено, и это было связано с регулярным выражением, требующим P – см. Здесь более подробную информацию: действительно ли это регулярное выражение в PHP?