Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: как запустить php скрипт с помощью ajax
Форумы портала PHP.SU » » Вопросы новичков » как запустить php скрипт с помощью ajax

Страниц (1): [1]
 

1. Panoptik - 09 Декабря, 2011 - 11:23:00 - перейти к сообщению
приветы усем!

суть такова. нужно просто запустить скрипт на исполнение из клиентского окна, но никаких данных получать не нужно. использовать $.get $.post можно, но ведь я же ничего не посылаю. вот собственно и вопрос как правильнее это сделать или упомянутые методы единственный вариант?
2. EuGen - 09 Декабря, 2011 - 11:27:16 - перейти к сообщению
Запускайте скрипт, который, в свою очередь, будет выполнять нужный Вам скрипт (через http://php.su/functions/?system , не забудьте подавить весь вывод). Например,

ajax.php:
PHP:
скопировать код в буфер обмена
  1. system('php /path/to/script.php > /dev/null');


А через $.get вызывать ajax.php
3. Panoptik - 09 Декабря, 2011 - 11:31:26 - перейти к сообщению
спасибо

посмотрел на ваш код и вспомнил недавнюю историю. мне нужно было проходить по дереву файловой системы и производить нужные операции, для этих целей нужны были права рута, пароль рута мне известен.
теперь вопрос: можно ли выше описанным методом system запустить php с правами рута?
4. EuGen - 09 Декабря, 2011 - 11:44:50 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. system('sudo php /path/to/script.php > /dev/null');

Пользователь, из-под которого выполняется ajax.php (то есть веб-сервер), должен быть в списке sudo (/etc/sudoers как правило)
но я бы не рекомендовал так делать.
5. Panoptik - 09 Декабря, 2011 - 11:48:34 - перейти к сообщению
/etc/sudoers - этот список насколько я понимаю дает право выполнять команды sudo без запроса пароля?
(Добавление)
кстати на сервере стоит centOS или команда sudo одинакова для всех видов *nix'ов?
6. Мелкий - 09 Декабря, 2011 - 11:51:25 - перейти к сообщению
EuGen пишет:
из-под которого выполняется ajax.php (то есть веб-сервер), должен быть в списке sudo (/etc/sudoers как правило)

Более того, должен быть прописан как NOPASSWD. Иначе - попросит отсутствующий пароль.

Присоединяюсь к рекомендации проверить, так ли необходимы рутовые права.
(Добавление)
Panoptik пишет:
/etc/sudoers - этот список насколько я понимаю дает право выполнять команды sudo без запроса пароля?

Нет, он просто даёт право на вызов sudo.
И описывает, кому и что, и от чьего имени можно вызывать.
7. EuGen - 09 Декабря, 2011 - 11:56:58 - перейти к сообщению
Мелкий

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

Но веб-сервер, имеющий возможность работать под root без пароля - это брешь в безопасности.

sudo одинакова везде, по сути, это название консольной программы.
8. Panoptik - 09 Декабря, 2011 - 12:00:08 - перейти к сообщению
ну про безопасность - это понятно. необходимость рута заключается просто в возможности иметь доступ к определенной папке и всем вложениям, потому как во вложенных папках находятся файлы имеющие разных владельцев и получить доступ ко всем от обычного пользователя не представляется возможным, а изменять права на 666/777 - выход крайне неприятный

ко всему добавлю что необходимость вызвана еще тем, что безопасность и так была нарушена и выше перечисленные файлы были изменены порядком 3к штук. вот собственно откуда взялась данная задача. и запуск скрипта с директивой sudo являлся лишь разовой акцией

пысы: всем спасибо за советы и ответы
9. EuGen - 09 Декабря, 2011 - 12:02:53 - перейти к сообщению
Panoptik пишет:
а изменять права на 666/777

Это куда более безопасное решение, чем работа из-под root
Да и необязательно. Для просмотра достаточно прав на листинг каталога (право x - исполнение) и просмотра файлов (право r - чтение).
10. Panoptik - 09 Декабря, 2011 - 12:06:49 - перейти к сообщению
нужно было еще и изменять, поэтому право w - объязательно
11. filkeith - 09 Декабря, 2011 - 12:59:45 - перейти к сообщению
А почему нельзя просот передать в php от js к примеру гетом просто x=1 а в php if(isset($_GET[x])){выполнить что то}
12. Panoptik - 09 Декабря, 2011 - 14:03:27 - перейти к сообщению
filkeith пишет:
А почему нельзя просот передать в php от js к примеру гетом просто x=1 а в php if(isset($_GET[x])){выполнить что то}

так можно было сделать и вконце концов было сделано)

 

Powered by ExBB FM 1.0 RC1