Exec() при установке

Ответить


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Смайлики
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[flash] ОТКЛЮЧЕН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Exec() при установке

Re: Exec() при установке

Сообщение B0nuse » 2010-04-26 11:49:40

lissyara писал(а):из того что я видел - mysqldump, gzip, htmldoc, и ещё кой-чё по мелочи.

Хорошо. Глянем вместе:
#---

Код: Выделить всё

hosts/billing/comp/Tasks/BackUp.comp

Строка 56

Код: Выделить всё

mysqldump --host=%s --port=%u --user=%s --password=%s --quote-names -r %s %s 2>&1

Выполняется дамп БД.
#---

Код: Выделить всё

hosts/billing/comp/www/Administrator/LogScan.comp

Строка 29

Код: Выделить всё

$Command = SPrintF('tail -n %u %s/%s',$Lines,$Logs,$Log);

Строка 32

Код: Выделить всё

$Command .= SPrintF(' | grep %s',EscapeShellArg($Search));

Строка 34

Код: Выделить всё

$Command .= ' 2>&1';

Смотрим лог...
Можно сделать средствами пхп, но лучше это делать самому при необхоимости с консоли...
#---

Код: Выделить всё

hosts/root/comp/www/Patches.comp

Строка 38

Код: Выделить всё

$Command = SPrintF('find %s -name "%s*.gz" -type f -mtime +2 -exec rm -f {} \;',$Folder,$DbName);

Ищем и удаляем файлы .gz которым больше 2х суток.
По хорошему, данную команду нужно вообще вынести в отдельный sh скрипт и повесить на крон, при необходимости.

Строка 50

Код: Выделить всё

$Command = 'cd %s;mysqldump --host=%s --port=%u --user=%s --password=%s --quote-names -r %s %s 2>&1;gzip %s';

бэкап БД...
Эти функции должен делать сам админ сервера, если он хороший админ...И делать это средставми самостоятельных sh скриптов или средствами панели.

Строка 353

Код: Выделить всё

$Command = 'mysql --host=%s --port=%u --user=%s --password=%s %s 2>&1 < %s';

инсерт базы в БД.. например - файла строки 347

Код: Выделить всё

$Path = SprintF('%s/db/%s/permissions.sql',SYSTEM_PATH,$HostID);

строки 366

Код: Выделить всё

$Path = SprintF('%s/db/%s/views.sql',SYSTEM_PATH,$HostID);

строки 385

Код: Выделить всё

$Path = SprintF('%s/db/%s/triggers.sql',SYSTEM_PATH,$HostID);

строки 404

Код: Выделить всё

$Path = SprintF('%s/db/%s/functions.sql',SYSTEM_PATH,$HostID);

#---

Код: Выделить всё

hosts/root/system/libs/Image.lib

строка 62

Код: Выделить всё

$Command = SPrintF('convert %s -thumbnail %ux%u^ -gravity North -extent %ux%u %s',$File,$Width,$Height,$Width,$Height,$File);

работа с картинками
#---

Код: Выделить всё

patches/billing/files/1000020.php

Код: Выделить всё

patches/billing/files/1000021.php

Код: Выделить всё

patches/billing/files/1000021.php

строка 3

Код: Выделить всё

Exec(SPrintF('rm -rf %s/scripts/JBsServer',SYSTEM_PATH));

удаляем файл...
#---

Код: Выделить всё

scripts/billing/install-gui.php

строка 275

Код: Выделить всё

$MySQL = SPrintF('mysql -u %s --password=%s --host=%s --port=%u %s < %s 2>&1',$__SETTINGS['db-user'],$__SETTINGS['db-password'],$__SETTINGS['db-server'],$__SETTINGS['db-port'],$__SETTINGS['db-name'],$Path);

инсерт файлов в БД при установке.

строка 401

Код: Выделить всё

$Result = Exec('mysql --version 2>&1');

запрос версии мускуля

строка 422

Код: Выделить всё

$Result = Exec('htmldoc --version 2>&1');

запрос версии htmldoc
#---

Код: Выделить всё

scripts/root/db-install.php

инсерт баз в БД...
#---

Надеюсь я все нашел?
И это не считая sh скриптов, типа flush.sh

Замечу - я нисколько не критикую работу автора! Каждый др@#$т как он хочет...
Казалось бы, ничего страшного и все хорошо, но, повторюсь - функцию exec() часто запрещают на серверах в пхп по соображениям безопасности.

Поэтому, обращаясь к автору скрипта, прошу:
исключите (или минимизируйте) в будущих релизах использование функции exec() в биллинге. Чтобы без этой функции можно было нормально установить биллинг, настроить его и использовать (пусть даже без каких-то функций).

Все вышесказанное является ИМХО.
Спасибо.

Re: Exec() при установке

Сообщение Alex Keda » 2010-04-21 21:32:00

вы можете исходный код посмотреть.
команду grep вроде никто не отменял? =)
===========
из того что я видел - mysqldump, gzip, htmldoc, и ещё кой-чё по мелочи.

Re: Exec() при установке

Сообщение B0nuse » 2010-04-21 21:06:57

Виталий писал(а):exec() необходим для запуска команд.

Уважаемый, Виталий!
Для чего предназначе exec я знаю. Вопрос в другом был
B0nuse писал(а):Как обойтись без этой функции при установке и использовании скрипта?

Для чего использовать в скрипте команды, выполняющиеся из консоли? Это сильно нарушает политику безопасности. Почему нельзя обойтись только средствами ПХП?
Вы можете рассказать для чего и в какой момент используются подобные команды?

Re: Exec() при установке

Сообщение Виталий » 2010-04-21 9:53:27

exec() необходим для запуска команд.

Re: Exec() при установке

Сообщение Alex Keda » 2010-04-21 1:00:03

при использовании - нет

Exec() при установке

Сообщение B0nuse » 2010-04-20 19:47:38

Здравствуйте!

Зачем скрипт при установке требует функцию PHP exec() ? - пока на отключенную только эту фукцию ругается...
Как обойтись без этой функции при установке и использовании скрипта?
И возможно других функций

Код: Выделить всё

system, shell_exec, proc_terminate, proc_open,proc_nice, proc_getstatus, proc_close,  escapeshellcmd, escapeshellarg,passthru, popen, virtual, show_source,  pclose, exec, safe_dir, dl,ini_restore, chown, chgrp, shown_source, mysql_list_dbs,get_current_user, getmyid, apache_child_terminate, leak,pfsockopen,allow_url_fopen   

которые, обычно, отключают на хостингах по соображениям безопасности...

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

Вернуться к началу