2013-07-04 3 views
1

Я написал PHP-код из командной оболочкиВыполнение команды PHP оболочки требуется доступ SUDO

<?php exec("phing"); ?> 

Это не работает на всех из браузера выполнить.

Но я проанализировал, что он работает с той же командой, что требует разрешения «sudo». Я не уверен, как я могу позволить моему файлу PHP выполнить это комманд как sudo?

Пожалуйста, руководство

+0

есть команда 'phing'? –

+0

http://www.phing.info/ – jcsanyi

+1

Почему вы хотите выполнить phing с php? – bansi

ответ

2

При выполнении PHP, вы не могли (вероятно, не будет) в какой-либо конкретной директории. Попробуйте указать абсолютный путь <?php exec("/usr/bin/phing"); ?> Также, вы имели в виду ping вместо phing?

Если веб-сервер имеет доступ SUDO (действительно плохая идея) без пароля (действительно плохая идея !!!), чтобы выполнить эту команду, то вам необходимо изменить свой код <?php exec("/usr/bin/sudo phing"); ?>

Чтобы быть в состоянии запустите sudo, вам понадобится помощь администратора вашего компьютера. Я сомневаюсь, что ваш администратор это разрешит, потому что рискованно предоставлять доступ к веб-серверу sudo - большая часть работы заключается в том, чтобы веб-сервер НЕ имел никаких прав администратора.

+0

+1, всегда перемещайте исполняемый файл туда, где PHP может его запустить (или установить правильные разрешения в области без полномочий root). –

+0

Обратите внимание, что '/ etc/sudoers' может быть настроен так, чтобы пользователь веб-сервера мог выполнить * только эту команду' phing'. Все еще не очень хорошая идея, но более безопасная. –

+0

** его стандартная система сборки phing **; даже я пробовал это; не помогает мне. Я использую macmini; поэтому в apache я даже попытался предоставить полный доступ к «_www» (пользователь Apache).(при этом я столкнулся с синтаксической ошибкой в ​​файле sudoers, поэтому теперь я не могу это изменить, это другая проблема), но она никогда не работала. – Robin

0

Первый вопрос: какой сервер вы пытаетесь запустить? Это ваша собственная машина? общий хостинг?

Это, вероятно, не то, что она требует sudo, но это требует некоторые разрешения, что ваш PHP скрипт не имеет, и sudo это один из способов исправить это.

Лучше всего исправить это, чтобы выяснить, какой пользователь работает под вашим скриптом (возможно, nobody?) И гарантировать, что файлы, к которым нужен phing, принадлежат одному и тому же пользователю. Это может быть так же просто, как изменение права собственности на файл через вашу FTP-программу.

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


Чтобы получить часть этой информации, попробуйте запустить следующий PHP-файл:.

<pre> 
<?php 
passthru('id -a'); // figure out what user we're executing as 
passthru('pwd');  // figure out what directory we're in 
passthru('ls -l .'); // look at the permissions set on the current directory 
?> 
</pre> 
+0

Спасибо. Информация, которую я получил от этого скрипта: _www является пользователем/_www является группой; Настоящий рабочий каталог имеет полный RWX acess/Все тот же вопрос. (обратите внимание, что у меня есть эта папка для _www grp.) – Robin

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