Форум

/ домой \ \ темы /



Тема: exec_shell('C:\ffmpeg.exe') и "Error in script:"

16/06/2020 18:12 Gyricon:
Делаю в PHP-скрипте простенькую команду
exec_shell('C:\ffmpeg.exe');
и получаю трёхкомпонентную вставку: "Error in script:", SHTTPS-рекламу, и консольный вывод ffmpeg.exe.

• Также попытка обмануть через опосредственный вызов exec_shell('C:\ffmpeg.cmd') не прокатила — трёхкомпонентная ошибка выползает всё та же.

• Если ffmpeg.exe нагрузить полезными параметрами — он, не смотря на "Error in script:", отрабатывает нормально, выполняя задуманное.

• В php.ini поднял лимит памяти memory_limit=512M — не помогает.

• Попытался направить вывод во временный PHP output buffer и аннулировать его постфактум тоже не помогло:
ob_start();
exec_shell('C:\ffmpeg.exe');
ob_end_clean();

• Аналогично (с выводом ошибок) ведёт себя и другая программа, умеющая делать некоторые вещи как и ffmpeg:
exec_shell('C:\mplayer.exe');

• Если вызывать какие-либо другие утилиты с консольным выводом типа exec_shell('dir') то никаких ошибок и выводов в HTML страницу не выводится, всё нормально.

Среда: Windows XP SP3, PHP 5.4.29, Small HTTP Server ver. 3.05.92.

16/06/2020 18:13 Gyricon:

На всякий случай копипаста из веб-инспектора [1 часть]:

<hr><pre><font size=+2><b>
Error in script:

</b></font></pre><hr><br> <br><center><table width=500 height=60 border=1 cellspacing=0 cellpadding=1><tr vallign=top cellpadding=0 cellspacing=0><td height=4 bgcolor=#8030e0> <table width=494 height=8 border=0 cellspacing=0 cellpadding=1><tr cellpadding=1 cellspacing=0><td bgcolor=#5030a0 width=60 height=4><font size=0 color=#ffffff class=f3>Unregistred</font></td><td bgcolor=#6030b0 width=60 height=4><font size=0 color=#ffffff class=f3a>copy</font></td><td bgcolor=#7030c0 width=60 height=4 align=right><font size=0 color=#ffffff class=f3a>of <b>Small</b></font></td><td bgcolor=#8030d0 height=4><font size=0 color=#ffffff class=f3a><b>HTTP server</b></font></td><td bgcolor=#9030e0 width=60 height=4><font size=0 class=f3> </font></td><td bgcolor=#a030f0 width=60 height=4><font size=0 class=f3> </font></td><td bgcolor=#b030ff width=60 height=4><font size=0 class=f3> </font></td><td bgcolor=#c0c0c0 width=12 height=4><a href=smallsrv.com/news.htm><font size=0 color=#00c0f0 class=f3><b>/\\</b></font></a></td></tr></table></td></tr><tr valign=middle align=center><td bgcolor=#f0ffff><b><a href=smallsrv.com/dev.htm ><font size=2 color=#00c0ff class=f>Software developping, hight quality, best price</font></a><br><a href=smallsrv.com/regrus.cgi><font size=2 color=#00c090 class=f><br>?????????????????, ????? ???????? ???????</font></b></a></td></tr></table></center><br>
16/06/2020 18:15 Gyricon:

[2 часть]

ffmpeg version N-86763-g341f012-Reino Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.1.0 (GCC)
configuration: --arch=x86 --target-os=mingw32 --cross-prefix=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32- --pkg-config=pkg-config --pkg-config-flags=--static --extra-version=Reino --enable-gray --enable-version3 --disable-debug --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-w32threads --disable-schannel --enable-fontconfig --enable-gmp --enable-gnutls --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfdk-aac --enable-libflite --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libzimg --enable-libzvbi --enable-gpl --enable-avisynth --enable-frei0r --enable-filter=frei0r --enable-librubberband --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-avresample --extra-cflags='-march=pentium3' --extra-cflags=-O2 --extra-cflags='-mfpmath=sse' --extra-cflags=-msse --enable-static --disable-shared --prefix=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32
libavutil 55. 67.100 / 55. 67.100
libavcodec 57.100.104 / 57.100.104
libavformat 57. 75.100 / 57. 75.100
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 95.100 / 6. 95.100

16/06/2020 18:16 Gyricon:

[3 часть]

libavresample 3. 6. 0 / 3. 6. 0
libswscale 4. 7.101 / 4. 7.101
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
X-Powered-By: PHP/5.4.29
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/html



А ДАЛЬШЕ УЖЕ ИДЁТ ВЫВОД МОЕГО САЙТА
<html lang=ru><head><title>Бла бла бла бла бла
бла бла бла бла бла бла бла бла бла бла бла бла
бла бла бла бла бла бла бла бла бла бла бла бла
бла бла бла бла</body></html>


16/06/2020 18:41 Max:
Во первых, видимо, у вас достаточно старая версия программы, -- в новых версиях рекламы нет.


А в PHP скрипте, у Вас есть какой-то заголовок страницы? Куда он девается?
И я не совсем понимаю, что Вы хотели бы получить на вэб странице, запуская приложение не выводящие ни какого html контента, и судя по всему, в первом случае, вообще ничего в консоль не выодящие?

В случае PHP есть простой метод разобраться где что не так, -- запустить скрипт с командной строки без сервера, --
php.exe имя_скрипта.phtml
или
php-cgi.exe имя_скрипта.phtml

16/06/2020 19:25 Gyricon:
Нет, заголовков там никаких не добавлял. Простая страница, формирующая себя частично из SQLite базы (PHP) и вызывающая exec_shell.

• Моя сформированная страница выводится как и задумано (работоспособна, частично формируется из данных SQLite базы с помощью PHP скриптов.
• В конце этой страницы вызывается exec_shell('C:\ffmpeg.exe')
• Однако SHTTPS отправляет браузеру следующий пакет:
1. Собственно, заголовок HTTP/400 вместо нормального HTTP/200.
2. Свою четырёхкомпонентную вставку ("Error in script:"; рекламу; зачем-то шелл-вывод от ffmpeg.exe; зачем-то копию http-заголовков)
3. Мой PHP output buffer (там абсолютно всё верно сформировано как я и задумывал).
В итоге браузер пункты 2+3 отображает как может — получается .

Только что попробовал через встроенный в PHP веб-сервер (php.exe -S localhost:80 -t "C:\MySite"). Всё работает нормально:
1. exec_shell('C:\ffmpeg.exe параметры') делает своё дело.
2. Никаких ошибок PHP-скрипта не возникает, PHP output buffer приходит в браузер без искажений.

16/06/2020 19:27 Gyricon:
Сам SHTTPS на время теста с PHP-вебсервером, разумеется, отключал для чистоты эксперимента.

Пользователь: Пароль: Новый пользователь:   Запомнить пароль: