Иммется виртуальный хостинг (зенон) на котором можно компилировать свои модули для пхп и подключать их в собственный 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-ы в другом месте?