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 или администратор
Это файл эксешник, простой 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 или администратор