p.s. Посмотрел по форуму, вроде подобной инструкции не присутствует.
Начнем с самого начала что же такое SOAP ?
SOAP — протокол обмена структурированными сообщениями в распределённой вычислительной среде. (википедия)
И что же это нам дает?
Ответ прост: удаленно отправлять какие либо консольные команды на сервер
Что же нужно для этого сделать?
Открываем worldserver.conf и находим строку SOAP.Enabled
Чтоб включить SOAP нужно поставить SOAP.Enabled = 1
Для указания IP адреса через который будет доступен SOAP используем как не сложно догадаться SOAP.IP
Можно указать localhost то есть 127.0.0.1
Либо же 0.0.0.0 для того чтоб открыть доступ по всем доступным IP адресам.
Либо же взять один из внешних IP адресов и указать его, пример 2.112.80.20
Для указания порта для обращения используется SOAP.Port
После изменений перезагрузите сервер
Перейдем непосредственно к PHP
Для создания подключения к SOAP будем использовать SoapClient
Для исправления
Пример кода подключения к SOAP
Теперь выполним произвольную команду к примеру help
Разберем что тут написано используя экземпляр SoapClient вызываем метод executeCommand что принимает у себя в параметрах экземпляр SoapParam у которого первый аргумент сама команда (данные для передачи на сервер), второй оставляем без изменений "command" (это имя параметра)
Либо же использовать эту библиотеку
Начнем с самого начала что же такое SOAP ?
SOAP — протокол обмена структурированными сообщениями в распределённой вычислительной среде. (википедия)
И что же это нам дает?
Ответ прост: удаленно отправлять какие либо консольные команды на сервер
Что же нужно для этого сделать?
Открываем worldserver.conf и находим строку SOAP.Enabled
Чтоб включить SOAP нужно поставить SOAP.Enabled = 1
Для указания IP адреса через который будет доступен SOAP используем как не сложно догадаться SOAP.IP
Можно указать localhost то есть 127.0.0.1
Либо же 0.0.0.0 для того чтоб открыть доступ по всем доступным IP адресам.
Либо же взять один из внешних IP адресов и указать его, пример 2.112.80.20
Для указания порта для обращения используется SOAP.Port
После изменений перезагрузите сервер
Перейдем непосредственно к PHP
Для создания подключения к SOAP будем использовать SoapClient
- Выполните в скрипте phpinfo();
- Если не можете найти Soap Client enabled как на скриншоте
Для исправления
- Откройте файл php.ini в смоем Apache пример Apache/bin/php.ini
- Удалите ; перед extension=php_soap.dll (если у вас Windows, или же extension=php_soap.so если у вас linux, может встречаться вариант extension=soap.so)
- Перезагрузите сервер apache
Пример кода подключения к SOAP
PHP:
$client = new \SoapClient(null, [
'location' => 'http://127.0.0.1:7878/', //Адрес подключения IP:PORT
'uri' => 'urn:TC', //Оставьте без изменений для TrinityCore
'login' => ' ', // Указывайте логин GM аккаунта
'password' => ' ', //Указывайте пароль GM аккаунта
'style' => SOAP_RPC, //Оставьте без изменений
'keep_alive' => false //Оставьте без изменений
]);
Теперь выполним произвольную команду к примеру help
PHP:
$result = $client->executeCommand(
new \SoapParam('help', "command")
);
PHP:
$client = new \SoapClient(null, [
'location' => 'http://127.0.0.1:7878/',
'uri' => 'urn:TC',
'login' => 'someLogin',
'password' => 'somePassword',
'style' => SOAP_RPC,
'keep_alive' => false
]);
try {
$result = $client->executeCommand(new \SoapParam('help', "command"));
print_r($result);
}catch (\Exception $e){
print_r($e);
}
Переименование гильдии
$client->executeCommand(new \SoapParam('guild rename "Старое Название" "Новое название"', "command"));
Смена фракции
$client->executeCommand(new \SoapParam('character changefaction ИмяПерсонажа', "command"));
Отправка товара по почте
$client->executeCommand(new \SoapParam('send items ИмяПерсонажа "Заголовок" "Текст Сообщения" itemID:Count', "command"));
$client->executeCommand(new \SoapParam('guild rename "Старое Название" "Новое название"', "command"));
Смена фракции
$client->executeCommand(new \SoapParam('character changefaction ИмяПерсонажа', "command"));
Отправка товара по почте
$client->executeCommand(new \SoapParam('send items ИмяПерсонажа "Заголовок" "Текст Сообщения" itemID:Count', "command"));
Либо же использовать эту библиотеку