Не работает exec() на FreeBSD

voise

Новичок
На локал хосте в Zend Studio и на денвере такое работает. А сервере в инете apache linux mod fastcgi не работает.
Это файл эксешник, простой 1.exe для эксперимента, скомпилированный в Borland как консольное приложение, в нем просто создается файл с названием 1.txt, и в него заноситься какая-нибудь строка, и все.
На локалке в php скрипте запись типа
exec('1.exe'); - срабатывает в той же директории создается текстовой файл, видно что работает. А на сервере в интернете, молчание, не сообщения об ошибках, ничего. Даже если написать в строку
какую нибудь ерунду типа -exec('/bin/fig/1.exescx'); - никаких сообщений об ошибках. Права на 1.exe стоят 777.
Но вот такие команды например работают -
$arr = array();
exec('env',$arr);
print_r($arr);

выводит [2] => PATH=/sbin:/bin:/usr/sbin:/usr/bin;

Там советуют использовать абсолютные пути.
переменные _ENV["DOCUMENT_ROOT"] и _SERVER["DOCUMENT_ROOT"] равны чему то типа: /home/virtwww/site/http
а переменная SERVER["PATH"] равна /bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
Что из этого абсолютный путь?
Я думал что указать абсолютный путь к эксешнику значить что-то типа exec('/home/virtwww/site/http/dir/1.exe'); - и так с обычными includами работает.

теперь я не монимаю что такое абсолютный путь, может быть что-то типа - exec('/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin/dir/1.exe');
или exec('/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin/home/virtwww/site/http/dir/1.exe');
Я вообще запутался.

На сервере стоит зенд оптимизер.
И может быть в этом пути должно быть в начале обязательно имя дика, - например D://home/

Так не работает exec('/home/virtwww/site/http/dir/1.exe'); Хотя такое работает - echo file_get_contents('/home/virtwww/site/http/dir/1.exe'); то есть путь правильный.

Можешь привести пример sanych как именно у тебя выглядел этот путь. А то я не понимаю - как вот это вот /usr/local/bin приставить куда, - вот так -exec(' /usr/local/bin/home/virtwww/site/http/dir/1.exe'); или как.

Вообще мне кажется что дело не в пути а в каких то правах или, ещё чем то.

В этой функции ехеc() - есть какие-то команды, типа -d, -f, env ; а есть конкретно чисто когда выполняется ексешник. типа ехеc('1.exe');

То есть это разделение на два каких то типа аргументов. Где есть мануал который это разделение описывает, что оно означает.
В обычном описании ехеc(), ничего такого нет. Это какие-то встроенные команды. или команды "операционной системы" Я вообще не представляю что это, и где найти
мануал тоже.

Возможно на хостинге стоит какое-то ограничение на exe файлы, как это узнать. Спросить у хостера. У них там в некоторых тарифных планах не предусмотрена поддержка ехеc(); в самых дешевых.

Вообще возможно ли такое - это как я себе представляю, что бы на сервере в инете - работало так же как у меня на локалхосте. И ещё это Fast-Cgi - не понятно, почему если предусмотрено что ехеc() может
выполнять еxe файлы, зачем тогда Fast-Cgi, и чем они отличаются.

Предполагается выйти за приделы одной транзакции php, - что бы висел процесс, который например бы отвечал за сохранность текстовой базы данных. Он может принимать данные типа добавить удалить, заменить и тп.
И тратить на сложные алгоритмы обеспечения сохранности файлов сколько угодно времени. Откладывать операции и все такое.
Или как - запускался бы каждый раз отдельный? Он может принимать что-то?.

Демоны, это не надо.

Как узнать от чьего имени запускается еxec; Как зайти на сервер как root. Я обычно захожу через sftp, но что это значит root или администратор
 

AmdY

Пью пиво
Команда форума
Только что досмотрел пятидесятилетие КВНа, два часа шутили, но что такое смех понял только прочитав Ваше сообщение.

Вы проделали прекрасную работу и подготовили эталонное описание ошибки. Но вот ошибка заслуживает только темы ЮМОР. Вас не смущает что вы скомпилировали EXE-шник в винде, а вдруг на линуксе он не работает? Заведите себе виндоус хостинг и пользуйтесь на здоровье.

p.s. Для линукса есть замена билдера, вроде kylix, но с виндоус сервером у вас гемороя будет меньше.
 

Dovg

Продвинутый новичок
15.08.1982 (Возраст: 29) Мое лично ИМХО, что уже поздно.
 
Сверху