Иммется виртуальный хостинг (зенон) на котором можно компилировать свои модули для пхп и подключать их в собственный php.iniбыл собран модуль ffmpeg.so, нюанс такой, что все требуемые им библиотеки при сборке положены так же в хоумдир (в $HOME/local/lib), и из-под shell все работает только при установленной переменной окружения LD_LIBRARY_PATH=/bhome/part3/03/saroot/local/lib
%ldd ffmpeg.so
ffmpeg.so:
libavformat.so.52 => /bhome/part3/03/saroot/local/lib/libavformat.so.52 (0x2816e000)
libavcodec.so.51 => /bhome/part3/03/saroot/local/lib/libavcodec.so.51 (0x281ff000)
libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0x2866f000)
libavutil.so.49 => /bhome/part3/03/saroot/local/lib/libavutil.so.49 (0x28677000)
libz.so.3 => /lib/libz.so.3 (0x28683000)
libm.so.4 => /lib/libm.so.4 (0x28694000)
libmp3lame.so.0 => /bhome/part3/03/saroot/local/lib/libmp3lame.so.0 (0x286aa000)
libvorbisenc.so.2 => /bhome/part3/03/saroot/local/lib/libvorbisenc.so.2 (0x28733000)
libvorbis.so.3 => /bhome/part3/03/saroot/local/lib/libvorbis.so.3 (0x28832000)
libogg.so.5 => /bhome/part3/03/saroot/local/lib/libogg.so.5 (0x28859000)
libc.so.6 => /lib/libc.so.6 (0x2807d000)если LD_LIBRARY_PATH убрать, то
%ldd ~/local/lib/ffmpeg.so
/bhome/part3/03/saroot/local/lib/ffmpeg.so:
libavformat.so.52 => /bhome/part3/03/saroot/local/lib/libavformat.so.52 (0x2816e000)
libavcodec.so.51 => /bhome/part3/03/saroot/local/lib/libavcodec.so.51 (0x281ff000)
libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0x2866f000)
libavcodec.so.51 => not found (0x0)
libavutil.so.49 => not found (0x0)
libz.so.3 => /lib/libz.so.3 (0x28677000)
libm.so.4 => /lib/libm.so.4 (0x28688000)
libmp3lame.so.0 => not found (0x0)
libvorbisenc.so.2 => not found (0x0)
libvorbis.so.3 => not found (0x0)
libogg.so.5 => not found (0x0)
libavutil.so.49 => not found (0x0)
libmp3lame.so.0 => not found (0x0)
libvorbisenc.so.2 => not found (0x0)
libvorbis.so.3 => not found (0x0)
libogg.so.5 => not found (0x0)
libc.so.6 => /lib/libc.so.6 (0x2807d000)что понятно, так как собственноручно собранные либы не попадают в директории по умолчанию.
ffmpeg.so положен в $HOME/local/libпрописал в ~/php4.ini
extension_dir = "/bhome/part3/03/saroot/local/lib"
extension=ffmpeg.soиз shell все нормально:
php -c ~/php4.ini -i | grep ffm
ffmpeg
ffmpeg support (ffmpeg-php) enabled
ffmpeg-php version 0.5.0
ffmpeg.allow_persistent 0%php -c ~/php4.ini -m | grep ffm
ffmpeg
при попытке же открыть через веб, скрипт с phpinfo() информация о модуле отсутствует. При попытке подключить его динамически -Warning: dl() [function.dl]: Unable to load dynamic library '/bhome/part3/03/saroot/local/lib/ffmpeg.so' - Shared object "libavcodec.so.51" not found, required by "libavformat.so.52" in /bhome/part3/03/saroot/domain/www/testtest/test3.php on line 21
подозреваю, что пхп не ищет либы /bhome/part3/03/saroot/local/lib, так как на него не распростряняются переменные окружения shell
Попытки экспортировать переменную LD_LIBRARY_PATH в скрипте ни к чему не привели.
Может быть, есть еще способ заставить пхп искать Shared object-ы в другом месте?
Вообще такие вопросы лучше саппорту хостинга задавать, они лучше знают что и как у них организовано, а вариантов может быть много. Универсальным вариантом остается статическая сборка.
>Вообще такие вопросы лучше саппорту хостинга задавать, они лучше знают что и
>как у них организовано, а вариантов может быть много. Универсальным вариантом
>остается статическая сборка.Вариант статической сборки действительно 100% сработает, т.к. собираться все будет уже непосредственно в shell.
а вообще, есть ещё такая штука: (для apache)
http://httpd.apache.org/docs/1.3/mod/mod_env.html
тарифный план не позволяет подключить к апачу mod_envНо проблему удалось обойти, подключив PHP как CGI модуль к апачу :) Тему можно закрыть.
>тарифный план не позволяет подключить к апачу mod_envкогда он там изначально есть :))))
>
>Но проблему удалось обойти, подключив PHP как CGI модуль к апачу :)
>Тему можно закрыть."Труден путь из потемок к свету..." (с)
Доброго времени суток!Та же проблема. Но использовать PHP как CGI не хотелось бы.
собрал fmpeg как ./configure --prefix=$HOME/local --enable-static --enable-shared
ffmpeg- ./configure --prefix=$HOME/local --with-php-config=$HOME/php-config --with-ffmpeg=$HOME/localв $HOME/php-config тупейший перл-скрипт подменяющий --extension-dir на $HOME/local/phpext
в итоге
> ldd ~/local/phpext/ffmpeg.so
$HOME/local/phpext/ffmpeg.so:
libavformat.so.52 => $HOME/local/lib/libavformat.so.52 (0x6a51000)
libavcodec.so.51 => $HOME/local/lib/libavcodec.so.51 (0x6bee000)
libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0x72cb000)
libavcodec.so.51 => not found (0x0)
libavutil.so.49 => not found (0x0)
libz.so.3 => /lib/libz.so.3 (0x73d6000)
libbz2.so.2 => /usr/lib/libbz2.so.2 (0x74ea000)
libm.so.4 => /lib/libm.so.4 (0x75fa000)
libavutil.so.49 => not found (0x0)
libc.so.6 => /lib/libc.so.6 (0x6736000)подскажите, пожалуйста, с какими ключами конфигурировать. чтобы сборка
было статической?Премного буду благодарен.