LINUX.ORG.RU

Запуск shell скрипта с помощью php exec

 , ,


0

3

Хочу сделать запуск программки на сервере с помощью кнопки.

По нажатию кнопки запускаю javascript с <?php exec(./xxx/yy.sh); ?>

Запускается скрипт yy.sh.

В скрипте такие команды:

mkdir aa

mkdir xxx/cc

./xxx/ddd -options

mkdir ee

Почему-то mkdir aa и mkdir ee выполняются, а вот mkdir xxx/cc и ./xxx/ddd не выполняются, хотя на сервере все запускается из консоли.

Заранее спасибо.


Потому, что кто-то не читает

man mkdir

NAME
       mkdir - make directories

SYNOPSIS
       mkdir [OPTION]... DIRECTORY...

DESCRIPTION
       Create the DIRECTORY(ies), if they do not already exist.

       Mandatory arguments to long options are mandatory for short options too.

...
       -p, --parents
              no error if existing, make parent directories as needed
...
kostik87 ★★★★★
()
Ответ на: комментарий от GH12

Ну там же можно как-то stdout\stderr посмотреть?

хотя на сервере все запускается из консоли.

Под тем же юзером, под кторым рабоатет php и в том же каталоге?

alozovskoy ★★★★★
()

Я б посмотрел права на скрипт, ну и SELinux, внезапно, может запрещать выполнение левых скриптов для процесса вебсервера.

theNamelessOne ★★★★★
()
Ответ на: комментарий от alozovskoy

Как stdout\stderr посмотреть не знаю.

Каталог тот. А вот юзер в php нигде не прописан. Залогиниваться для нажатия кнопки не нужно.

GH12
() автор топика
Ответ на: комментарий от theNamelessOne

Права на скрипт.

-rwxrwxrwx 1 root root 337 June 10 10:23 make_frames.sh

GH12
() автор топика
Ответ на: комментарий от theNamelessOne

Это виртуальный сервер, созданный мной под пользователем root, в котором я и работаю на сервере.

GH12
() автор топика

вангую, что проблема таки с путями. Попробуй абсолютные пути использовать.

kiotoze ★★★★
()
Ответ на: комментарий от GH12

Концептуально идея такая.

Нажимаем на кнопку, запускаем программку на сервере, меняем цвет кнопки, программка закончила работу, снова меняем цвет кнопки.

GH12
() автор топика
Ответ на: комментарий от GH12

сначала реши задачу из самим скриптом, чтобы все запускалось и каталоги создавались. А для кнопки с таким поведением, нужно будет использовать что-то из ajax, websockets, иначе будешь получать всегда результат, когда программа уже закончила работу.

kiotoze ★★★★
()
Вначале скрипта добавь "set -x". и запускай так exec("./xxx/yy.sh 2>&1 log.tmp")
stalkerhouse
()

Создавай из php очередь заданий (в файле каком-нибудь или БД). А потом вешай на крон (раз в минуту) скрипт исполнителя заданий, и не на php. Про блокировки не забудь, да.

Сложно? Зато правильно

r_asian ★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.