При выполнении чего-либо как побега оболочки из веб-сервера или любой другой программы, параметры среды, довольно вероятно, не становятся прикладными. Например, переменные как: PATH
, LD_LIBRARY_PATH
, и т.д. имейте их настройки по умолчанию или никакие настройки вообще поэтому при выполнении Escape оболочки, необходимо, по крайней мере, сделать следующее:
/usr/local/bin/gnatmake
или /usr/local/bin/words
/usr/bin/env
удостоверяться, что в Escape оболочки это имеет надлежащие настройки. Проверьте те же настройки в свою терминальную оболочку.ldd /usr/local/bin/words
ДОПОЛНИТЕЛЬНАЯ ВОЗМОЖНОСТЬ
Вместо того, чтобы выполнить программу непосредственно используют следующий сценарий:
#!/bin/sh
. /etc/profile
/usr/bin/env
pwd
./words 2>&1
и отправьте вывод. Это скажет Вам, если программа выполнится и если она отказывает.
Еще одна вещь проверить состоит в том действительно ли пользователь www-data
или независимо от того, что работает ./words
способно к доступу к базе данных это ./words
потребности если таковые имеются.
Попытайтесь запустить не саму программу, но сценарий, запускающий эту программу, и регистрирующийся это - вывод STDERR и среда.
Также необходимо было посмотреть в журналы веб-сервера.
#!/usr/bin/python print "Hello World\n" import os; os.system("./words");
и названный им через PHP, он привел точно к тем же результатам как вызов программы Linux непосредственно в PHP.
– caw
09.04.2012, 02:21
os.system
выполнения хорошо. Вам нужно больше многословия для решения вопроса, друг.
– poige
09.04.2012, 07:17
os.system
работы правильно. Я просто думал, что должен был использовать Python или некоторый другой язык сценариев, отличающийся от PHP.
– caw
09.04.2012, 14:13
мм... Я - суперновичок в программировании, но... возможно, компиляции программы в веб-сервере? Или сделайте виртуальную машину с той же конфигурацией, что Вы работаете на веб-сервере, для компиляции кода там.
Поскольку каждый - x86, и другой i686, правильно?
/usr/bin/env
resultet вAPACHE_PID_FILE=/var/run/apache2.pid APACHE_RUN_USER=www-data MONIT_DATE=... MONIT_HOST=... PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin PDFLIBLICENSEFILE=/etc/pdflib/pdflib_licence _=/usr/bin/env PWD=... APACHE_RUN_GROUP=www-data MONIT_PROCESS_PID=0 MONIT_EVENT=Started MONIT_PROCESS_MEMORY=0 SHLVL=4 MONIT_PROCESS_CPU_PERCENT=0 MONIT_SERVICE=apache2 MONIT_PROCESS_CHILDREN=0 MONIT_DESCRIPTION=failed, cannot open a connection to INET[...] via TCP
. Полный путь ничего не изменил.ldd
посмотрите вопрос выше. – caw 05.04.2012, 02:31PWD
был/is/htdocs/www/words
между прочим, если это важно. – caw 05.04.2012, 02:33words
программа? – Karlson 10.04.2012, 00:14/
и программаwords
находится в/words/
. Это - путь этоPWD
возвращенный также. Конечно, я сделалchdir('words')
в PHP для изменения каталога. – caw 10.04.2012, 03:24export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<PATH_WHERE_GNAT_LIBRARY_IS>
– Karlson 13.04.2012, 00:11