LINUX.ORG.RU

Как запустить программу через exec?

 , ,


0

2

Есть сервер с centos 5. На сервере есть самописное приложение написанное на C++. Есть задача дернуть его из php. Простейший скрипт echo exec('/home/some/bin/a',$output, $retval); echo $retval;

возвращает retval = 126. Права на файл 755. При этом скрипт echo exec('ls',$output, $retval); echo $retval;

работает как надо.


Если у тебя есть туда shell доступ, проверь что сам по себе запускается бинарь, который ты дергаешь, и что /home не смонтирован с noexec.

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

И в шелле $? - 0? Программа результат в &1 выводит? (а то вдруг ей дескрипторы нужны, которые закрыты).

anonymous
()

man bash

If a command is found but is not executable, the return status is 126.

да, забыл добавить, через шелл все нормально запускается

Что-то здесь явно не так. Может, какой-нибудь selinux, apparmor и т.п.? Или ACL на файл? Что, если запускать программу так:

/lib/ld-linux.so.2 /home/some/bin/a
Или переместить программу в /usr/local/bin.

gentoo_root ★★★★★
()

Пользователь apache (или httpd или под каким у тебя там пользователем крутится апач) не имеет прав на чтение и/или выполнение /home/some/bin/a (или одной из директорий в этом пути).

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

В точку! Одна из директорий в пути имела права 700, поменял на 755 и все заработало. Тему можно закрывать

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