2011-07-08 3 views
2

Я пытаюсь запустить сценарий оболочки из php-скрипта.Не удается запустить сценарий оболочки из веб-скрипта php

У меня есть полный контроль над средой (unix на mac), я должен иметь все разрешения и т. Д. Правильно.

Веб-скрипт в /htdocs/

Скрипт может быть выполнен из любого места так, когда я иду/HTDOCS/в оболочке, я могу легко запустить его так: $ my_shellscript

. ., но когда мой PHP скрипт (который расположен в HTDOCS) пытается вызвать его:

shell_exec('my_shellscript'); 

я ничего не получаю.

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

Если вы знаете какой-либо другой способ запуска сценария оболочки через Интернет, это было бы хорошо.

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

+1

Как вы вызываете скрипт из своего PHP-кода? Отправьте образец кода. – Rahul

+0

'shell_exec()' нормально вызывать скрипт, но вы также должны убедиться, что путь правильный. Связано: http://stackoverflow.com/q/6626995/367456 – hakre

+0

Что делает 'var_dump (shell_exec ('my_shellscript'));' распечатывается? В случае, если команда 'NULL' вызывает команду. – hakre

ответ

1

хорошо, у меня была проблема с несколькими неделями, решение должно проверить, имеет ли apace разрешение на выполнение вашего скрипта. Вы также можете попробовать запустить скрипт в php cli.

+0

За исключением того, что он сказал, что предоставил ему полный доступ, и он все еще не работает, поэтому должно быть что-то еще. – Clint

+0

хорошо, вы можете проверить, если shell_exec ('ls'); возвращает любой результат. Также прочитайте мою статью http://stackoverflow.com/questions/6468360/shell-exec-returns-empty-string –

+0

Кажется, что скрипт будет работать повсюду, но если я попытаюсь запустить его из сценария php. Другие программы оболочки работают нормально, я пробовал такие мелочи, как эхо, pwd и т. Д .; это, вероятно, что-то действительно основное, что мне не хватает. Спасибо всем за ваши предложения, я продолжу поиск .. – dataskills

0

Поскольку это shellscript, его необходимо вызвать с помощью префикса пути. Я думаю, что вам нужно сделать это:

shell_exec('./my_shellscript'); 
+0

Я пробовал это, но это не сработало, спасибо в любом случае. – dataskills

0

Первое: убедитесь, что PHP не работает в Safe Mode

Следующая вещь: Попробуйте запустить его с помощью функции exec() и используя полный путь (например,/вар/WWW/HTDOCS/my_shellscript)

+0

Спасибо за предложение, я попробовал дать полный путь (скрипт называется runtoc), и я получил «/ Users/homedir/util/runtoc: строка 4: 53730 Trace/BPT trap php myscript.php -v -e www «Кажется, существует проблема со ссылкой на php-скрипт, на который я ссылаюсь в сценарии оболочки, но я никогда не видел этого типа ошибок. Любые идеи? – dataskills

+0

Я не уверен. Когда я google эта ошибка, похоже, только на устройствах osx. Я нахожусь на osx, и я этого не видел, но я не часто запускаю сценарии оболочки. Я бы предложил использовать полные пути в ваших сценариях оболочки. вызывая скрипт оболочки из PHP, который затем вызывает другой файл PHP из командной строки? Уверен, у вас есть хорошие аргументы, но по номиналу кажется глупым. – Clint

0

Попробуйте сделать

echo shell_exec('my_shellscript 2>&1'); 

, который будет захватывать вывод Stderr скрипта и распечатать его. Если что-то внутри скрипта терпит неудачу, в противном случае этот вывод будет потерян, если он не будет запущен в интерактивном режиме.

+0

Спасибо, по крайней мере, у меня есть выход для работы с: – dataskills

+0

Спасибо , по крайней мере, у меня есть некоторый выход для работы, у меня есть «sh: ./runtoc: Нет такого файла или каталога». Затем я дал полный путь к скрипту, и я получил »/ Users/homedir/util/runtoc: строка 4 : 53730 Trace/BPT trap php myscript.php -v -e www «Кажется, существует проблема со ссылкой на php-скрипт, на который я ссылаюсь в сценарий оболочки, но я никогда не видел этого типа ошибки. Есть идеи? – dataskills

+0

не знаю. вам придется прорыть скрипт runtoc (приложение?) и посмотреть, что там происходит –

Смежные вопросы