[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запуск ПО из PHP
Страницы: 1, 2
sezon13
Помогите разобраться!
Система: Linux + Apache/2.2.22 + Debian + PHP 5.4.4-14

Подскажите, как выполнить скрипт в Linux из PHP, а именно мне надо запустить программу:
ffserver -f /home/www/ffserver.conf

Arh
наверно так
system('ffserver -f /home/www/ffserver.conf');


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
sezon13
работает, но параметры не передаются
запускается только ffserver
Игорь_Vasinsky
есть ещё passthru() и exec()

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sezon13
не, не идёт ...
если из обычной командной строки в Linux'е запускать, то работает, но это не выход
Arh
Вообще так не делают)
А если делают , то делают sh скрипт, в котором всё что нужно запускается с параметрами и уже потом запускают сам скрипт.

допустим файл web_ffserver.sh
#!/bin/bash
ffserver -f /home/www/ffserver.conf


system('web_ffserver.sh');


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
sezon13
Делаю так:
system("/home/www/scripts/ffsrv_video start");

сам скрипт:
#!/bin/bash

case "$1" in
start)
echo "starting video streaming server";
echo `ffserver -f /home/www/ffserver.conf`;
echo "connecting webcam";
# echo `LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l1compat.so ffserver -f /home/www/ffserver.conf`;
;;
stop)
echo "disconecting webcam";
echo `killall ffmpeg`;
echo "stoping video streaming server";
echo `killall ffserver`;
;;
*)
echo "Usage: /home/www/scripts/ffsrv_video {start|stop}"
exit 1
;;
esac

exit 0

при выполнении - страница зависает на продолжительное время
sezon13
заработало!!!
надо было задать расширение ".sh" файлу

Тока возникла проблема.
php страница тупо зависает на этом скрипте ... помогает перезагрузка страницы в ручном режиме.
Как от этого избавиться? Хотел через sleep и header, но не работает.
killer8080
если ненужно подставлять переменные в команду, то обратные кавычки самый лаконичный способ. Эхо можно убрать, если не нужно выводить stdout.
<?php
echo `ffserver -f /home/www/ffserver.conf`;

Цитата (sezon13 @ 22.03.2013 - 16:12)
Тока возникла проблема.php страница тупо зависает на этом скрипте ... помогает перезагрузка страницы в ручном режиме.Как от этого избавиться? Хотел через sleep и header, но не работает.

естественно, скрипт ждет пока отработает консольная команда. Попробуй перенаправить вывод и запустить в фоне,
<?php
`ffserver -f /home/www/ffserver.conf >/dev/null 2>&1 &`;

если не поможет, тогда nohup в помощь user posted image
sezon13
Обознался. Думал что всё работает, но камера выдаёт только статическую картинку.
Когда останавливаю службы, то ffserver останавливается, а ffmpeg - не существует.

ffmpeg запускаю через ffserver.config такой строкой:
Launch ffmpeg -r 10 -s 320x240 -f video4linux2 -i /dev/video0


В файле логов апача error.log выдаёт вот это:
ffserver version 1.0.4 Copyright © 2000-2012 the FFmpeg developers
built on Mar 3 2013 20:18:55 with gcc 4.6 (Debian 4.6.3-14+rpi1)
configuration:
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 59.100 / 54. 59.100
libavformat 54. 29.104 / 54. 29.104
libavdevice 54. 2.101 / 54. 2.101
libavfilter 3. 17.100 / 3. 17.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 15.100 / 0. 15.100
webcam.ffm: Pid 3202 exited with status 256 after 0 seconds

Последняя строка инересная.

Если есть возможность, то попробуйте у себя вот такую связку:
Рабочие файлы

если запускать вручную, в таком виде:
/home/www/scripts/ffsrv_video.sh start
/home/www/scripts/ffsrv_video.sh stop

то всё нормально работает.
а если из PHP, то сервер запускается, а ffmpeg - нет.
sezon13
Выложив файл ffserver.conf в папку /etc
и просто запустив файл ffserver
всё заработало.

Теперь нужно заставить файл ffserver без параметров запустить из PHP.

Сделав запуск вот так:
exec("ffserver");


сова сервер запускается, а ffmpeg - нет.
killer8080
Цитата (sezon13 @ 23.03.2013 - 10:56)
сова сервер запускается, а ffmpeg - нет.

может с правишками траблы?
sezon13
вот и не знаю
как проверить?
занимаюсь линуксом тока месяц и многого пока не знаю
killer8080
Цитата (sezon13 @ 23.03.2013 - 11:28)
вот и не знаю
как проверить?
занимаюсь линуксом тока месяц и многого пока не знаю

попробуй выполнить эту же команду из консоли, под теми же правами что и php.
Для начала нужно выяснить под какими правами работает php. Если apache+mod_php то на дебиане обычно юзер www-data, если fpm то наверно будет другой юзер. Чтоб узнать точно в php запусти такой код.
echo `whoami`;

потом зайди в консоль рутом, и выполни команду su с именем пользователя, затем выполни нужные команды запуска, и смотри какой будет результат. Полагаю как то так :)
sezon13
у меня apache+mod_php
вечером попробую
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.