Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Удаленный запуск консольных программ через PHP  (Прочитано 3706 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн maincode

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
На сервере стоит стандартный набор LAMP
Можно ли удаленно с помощью браузера через PHP  запустить консольную программу
Если да то как это сделать? :)

Оффлайн easy2002

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2786
  • Мурманск
    • Просмотр профиля
Tempora mutantur et nos mutantur in illis

Оффлайн maincode

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
спасибо, очень полезная шутка :)
но есть одна проблема :(

есть код php:
<?php
$output 
shell_exec("sh /home/maincode/work/compile");
echo 
$output;
?>


скрипт compile выглядет так:
/var/flex/sdk/bin/mxmlc /var/flex/test/Main.swf -output /var/flex/test/main.swf
echo complete;
Здесь используется компилятор mxmlc для создания swf

при запуске php из браузера в окно браузера пишется текст complete, но флешка не создается
Если запустить прямо в терминале sh compile то все работает нормально
Скажите плиз в чем проблема?

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Права. Апач пускается из под юзера/группы www-data/www-data.

Оффлайн maincode

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
как выставить нужные права? )

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
sudo chown www-data /var/flex/test/
sudo chmod g+rwx /var/flex/test/

Оффлайн maincode

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
не помогло (( файл все равно не создается

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
$output = shell_exec("sh /home/maincode/work/compile 2>&1");
2>&1 завернёт stderr в stdin и покажет всю ругань..

Оффлайн maincode

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
/home/maincode/work/compile: 1: /var/flex/sdk/bin/mxmlc: Permission denied complete

я так понял нужно выставить права для компилятора mxlmc?

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Да, должны быть права доступа на исполнение для пользователя www-data.

Оффлайн maincode

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
выставил права, теперь пишет
Unable to access jarfile /var/flex/sdk/bin/../lib/mxmlc.jar
пытался сделать права этому файлу, каталогу sdk в целом, не помогает

Пользователь решил продолжить мысль 07 Март 2010, 13:06:00:
подскажите плиз кто знает,  в чем проблема? :(
« Последнее редактирование: 07 Март 2010, 13:06:00 от maincode »

Оффлайн maincode

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
все разобрался...
1) sudo visudo
www-data ALL=NOPASSWD: ALL

2) shell_exec("sudo sh /home/maincode/work/compile 2>&1");

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
www-data ALL=NOPASSWD: ALL
Вах, красота то какая :idiot2:.
(стряхивая пыль с диска с руткитами) Адрес сервера дашь  ;) ?

Оффлайн maincode

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Вах, красота то какая
ну извините сделал как смог :) ни кто ведь не дал толкового совета как это сделать :(

Адрес сервера дашь  ;) ?
сервера нет )) эти эксперименты я делаю на локальной тачке, так что закатай губу обратно :-)

я так понимаю что вместо ALL надо прописать какую то конкретную программу? или может быть можно задать как то пароль?

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
я так понимаю что вместо ALL надо прописать какую то конкретную программу? или может быть можно задать как то пароль?
Ну с паролем точно не получится. Да, можно задать конкретную программу, но только в крайней необходимости. Ну а в твоём случае, если бы это был продуктивный сервер я бы всё же лучше с правами разобрался.

Хотя для домашней тачки пох, но это вырабатывает вредные привычки  ;)

 

Страница сгенерирована за 0.057 секунд. Запросов: 22.