<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Evgeny Neverov</title><author><name>Evgeny Neverov</name></author><id>https://teletype.in/atom/demone</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/demone?offset=0"></link><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/demone?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-13T11:58:04.146Z</updated><entry><id>demone:rest-api-update-registration</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/rest-api-update-registration?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>Перерегистрация на сервере авторизации приложений в Битрикс24</title><published>2026-03-30T07:25:16.459Z</published><updated>2026-03-30T07:25:16.459Z</updated><summary type="html">Симптоматика: вы во входящем запросе пользователя получаете auth_token, который сразу же считается просроченным. Решение — перерегистрация кодом выше + переустановка приложений.</summary><content type="html">
  &lt;pre id=&quot;aZ5V&quot;&gt;\Bitrix\Main\Loader::includeModule(&amp;#x27;rest&amp;#x27;);

$oldClientId = \Bitrix\Main\Config\Option::get(&amp;#x27;rest&amp;#x27;, &amp;#x27;service_client_id&amp;#x27;, null);

$oldClientSecret = \Bitrix\Main\Config\Option::get(&amp;#x27;rest&amp;#x27;, &amp;#x27;service_client_secret&amp;#x27;, null);

print_r(&amp;#x27;old service_client_id: &amp;quot;&amp;#x27;.$oldClientId.&amp;#x27;&amp;quot;&amp;#x27;);

print_r(&amp;#x27;old service_client_secret: &amp;quot;&amp;#x27;.$oldClientId.&amp;#x27;&amp;quot;&amp;#x27;);



\Bitrix\Main\Config\Option::delete(&amp;#x27;rest&amp;#x27;, [&amp;#x27;name&amp;#x27; =&amp;gt; &amp;#x27;service_client_id&amp;#x27;]);

\Bitrix\Main\Config\Option::delete(&amp;#x27;rest&amp;#x27;, [&amp;#x27;name&amp;#x27; =&amp;gt; &amp;#x27;service_client_secret&amp;#x27;]);



try

{

\Bitrix\Rest\OAuthService::register();

\Bitrix\Rest\OAuthService::getEngine()-&amp;gt;getClient()-&amp;gt;getApplicationList();

}

catch(\Bitrix\Main\SystemException $e)

{

echo &amp;#x27;error register portal&amp;#x27;;

echo &amp;quot;\n &amp;lt;br&amp;gt; \n&amp;quot;;

}

$newClientId = \Bitrix\Main\Config\Option::get(&amp;#x27;rest&amp;#x27;, &amp;#x27;service_client_id&amp;#x27;, null);

$newClientSecret = \Bitrix\Main\Config\Option::get(&amp;#x27;rest&amp;#x27;, &amp;#x27;service_client_secret&amp;#x27;, null);

if (

!is_null($oldClientId)

&amp;amp;&amp;amp; !is_null($oldClientSecret)

&amp;amp;&amp;amp; is_null($newClientId)

&amp;amp;&amp;amp; is_null($newClientSecret)

)

{

\Bitrix\Main\Config\Option::set(&amp;#x27;rest&amp;#x27;, &amp;#x27;service_client_id&amp;#x27;, $oldClientId);

\Bitrix\Main\Config\Option::get(&amp;#x27;rest&amp;#x27;, &amp;#x27;service_client_secret&amp;#x27;, $oldClientSecret);

}&lt;/pre&gt;
  &lt;p id=&quot;EgXP&quot;&gt;Симптоматика: вы во входящем запросе пользователя получаете auth_token, который сразу же считается просроченным. Решение — перерегистрация кодом выше + переустановка приложений.&lt;/p&gt;

</content></entry><entry><id>demone:0755-dirs-0644-files</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/0755-dirs-0644-files?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>0755 на папки, 0644 на файлы</title><published>2025-09-08T06:25:43.376Z</published><updated>2025-09-08T06:25:43.376Z</updated><summary type="html">Запускать в требуемой папке, работает рекурсивно.</summary><content type="html">
  &lt;pre id=&quot;i9ii&quot;&gt;find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;&lt;/pre&gt;
  &lt;p id=&quot;PYOc&quot;&gt;Запускать в требуемой папке, работает рекурсивно.&lt;/p&gt;

</content></entry><entry><id>demone:_D_IkK_jA37</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/_D_IkK_jA37?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>База данных, пользователь, права</title><published>2025-01-26T03:35:04.745Z</published><updated>2025-01-26T03:35:04.745Z</updated><summary type="html">PostgreSQL:</summary><content type="html">
  &lt;p id=&quot;vzeK&quot;&gt;PostgreSQL:&lt;/p&gt;
  &lt;pre id=&quot;UZ4p&quot;&gt;CREATE USER &amp;#x27;username&amp;#x27; WITH PASSWORD &amp;#x27;abcdef123&amp;#x27;;
CREATE DATABASE &amp;#x27;database&amp;#x27; WITH OWNER &amp;#x27;username&amp;#x27; TEMPLATE=&amp;#x27;template0&amp;#x27; ENCODING=&amp;#x27;utf8&amp;#x27;;
GRANT ALL PRIVILEGES ON DATABASE &amp;#x27;database&amp;#x27; TO &amp;#x27;username&amp;#x27;;&lt;/pre&gt;
  &lt;p id=&quot;wv6r&quot;&gt;MySQL:&lt;/p&gt;
  &lt;pre id=&quot;5a79&quot;&gt;CREATE USER &amp;#x27;username&amp;#x27;@&amp;#x27;%&amp;#x27; IDENTIFIED BY &amp;#x27;password&amp;#x27;;
CREATE DATABASE &amp;#x27;database&amp;#x27;;
GRANT ALL PRIVILEGES ON &amp;#x27;database&amp;#x27;.* TO &amp;#x27;username&amp;#x27;@&amp;#x27;%&amp;#x27;;&lt;/pre&gt;

</content></entry><entry><id>demone:ux_uac_user_provider_date</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/ux_uac_user_provider_date?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>Ошибка в updater-e 23.500.0 модуля main: [1062] Duplicate entry 6-group-2024-08-14 16:49:23 for key ux_uac_user_provider_date.</title><published>2024-08-14T09:03:38.543Z</published><updated>2024-08-14T09:03:38.543Z</updated><summary type="html">Возникает из-за дубликатов в b_user_access_check. Решается банально:</summary><content type="html">
  &lt;p id=&quot;gWkd&quot;&gt;Возникает из-за дубликатов в b_user_access_check. Решается банально:&lt;/p&gt;
  &lt;p id=&quot;ZouK&quot;&gt;&lt;code&gt;CREATE TEMPORARY TABLE b_user_access_check_tmp (USER_ID int, PROVIDER_ID varchar(50)) ENGINE=InnoDB;&lt;br /&gt;INSERT INTO b_user_access_check_tmp SELECT DISTINCT * FROM b_user_access_check;&lt;br /&gt;DELETE FROM b_user_access_check;&lt;br /&gt;INSERT INTO b_user_access_check SELECT * FROM b_user_access_check_tmp;&lt;/code&gt;&lt;/p&gt;

</content></entry><entry><id>demone:nginx-bind-0.0.0.0-server-no-listen</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/nginx-bind-0.0.0.0-server-no-listen?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>nginx binds 0.0.0.0:443 if there is server { } without listen</title><published>2023-02-21T13:24:07.598Z</published><updated>2023-02-21T13:24:07.598Z</updated><summary type="html">https://forum.nginx.org/read.php?2,235428,235439#msg-235439</summary><content type="html">
  &lt;p id=&quot;Jk8J&quot;&gt;&lt;a href=&quot;https://forum.nginx.org/read.php?2,235428,235439#msg-235439&quot; target=&quot;_blank&quot;&gt;https://forum.nginx.org/read.php?2,235428,235439#msg-235439&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>demone:excel-array-formula</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/excel-array-formula?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>MacOS Excel «Нельзя изменить часть массива»</title><published>2022-11-28T07:34:52.952Z</published><updated>2022-11-28T07:34:52.952Z</updated><summary type="html">Формулу с массивом можно сохранить в ячейке через Ctrl+Shift+Enter, просто через Enter — нельзя.</summary><content type="html">
  &lt;p id=&quot;v7dX&quot;&gt;Формулу с массивом можно сохранить в ячейке через Ctrl+Shift+Enter, просто через Enter — нельзя.&lt;/p&gt;

</content></entry><entry><id>demone:update-only-content-hash-in-composer-lock</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/update-only-content-hash-in-composer-lock?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>Обновить только content-hash в composer.lock</title><published>2022-07-05T07:31:28.450Z</published><updated>2022-07-05T07:31:28.450Z</updated><summary type="html">И всё.</summary><content type="html">
  &lt;pre id=&quot;hvJ8&quot;&gt;composer update --lock&lt;/pre&gt;
  &lt;p id=&quot;yTqZ&quot;&gt;И всё.&lt;/p&gt;

</content></entry><entry><id>demone:bx_check_socket_fail</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/bx_check_socket_fail?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>Работа с сокетами (check_socket): Fail</title><published>2022-06-15T04:09:56.774Z</published><updated>2022-06-20T03:29:11.031Z</updated><summary type="html">Дебажим через PHP консоль Битрикса:</summary><content type="html">
  &lt;p id=&quot;i8lu&quot;&gt;Дебажим через PHP консоль Битрикса:&lt;/p&gt;
  &lt;pre id=&quot;pmsH&quot;&gt;$level = error_reporting(E_ALL);
ini_set(&amp;#x27;display_errors&amp;#x27;, 1);
ini_set(&amp;#x27;log_errors&amp;#x27;, 0);

$handler = set_error_handler(function($errno, $errstr, $errfile, $errline) {
 print_r([$errno, $errstr, $errfile, $errline]);
});

$socket = fsockopen(&amp;#x27;ssl://domain.ru&amp;#x27;, 443, $errno, $errstr, 5);

var_dump($socket);

error_reporting($level);
set_error_handler($handler);&lt;/pre&gt;
  &lt;p id=&quot;gEJc&quot;&gt;Дальше смотрим ошибки и проделываем один из нескольких вариантов:&lt;/p&gt;
  &lt;p id=&quot;J4Hh&quot;&gt;1. В &lt;code&gt;/etc/hosts&lt;/code&gt; — добавить собственный хост: &lt;code&gt;&amp;lt;IP&amp;gt; &amp;lt;domain.tld&amp;gt;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;onw5&quot;&gt;2. Обновляем сертификаты:&lt;/p&gt;
  &lt;pre id=&quot;6t9V&quot;&gt;yum install ca-certificates -y
update-ca-trust&lt;/pre&gt;
  &lt;p id=&quot;XFEv&quot;&gt;3. Если предыдущий пункт не помог, а дебаг кажет ошибку типа &lt;code&gt;SSL routines:ssl3_get_server_certificate:certificate verify failed&lt;/code&gt; — дописываем корневой сертификат LE в &lt;code&gt;/etc/pki/tls/cert.pem&lt;/code&gt; (или где там у вас корневые сертификаты в ОС хранятся) в конец файла.&lt;/p&gt;

</content></entry><entry><id>demone:laravel9-smtp-self-signed-certificate</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/laravel9-smtp-self-signed-certificate?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>Laravel 9 SMTP Self-Signed Certificates</title><published>2022-04-27T07:19:36.718Z</published><updated>2022-04-27T07:19:36.718Z</updated><summary type="html">При отправке почты на прошлых версиях использовался Swift Mailer, который для работы с локальным SMTP-сервером с самоподписным сертификатом принимал атрибуты вида: </summary><content type="html">
  &lt;p id=&quot;wmdV&quot;&gt;При отправке почты на прошлых версиях использовался Swift Mailer, который для работы с локальным SMTP-сервером с самоподписным сертификатом принимал атрибуты вида: &lt;/p&gt;
  &lt;pre id=&quot;vN0w&quot;&gt;&amp;#x27;stream&amp;#x27; =&amp;gt; [
    &amp;#x27;ssl&amp;#x27; =&amp;gt; [
        &amp;#x27;allow_self_signed&amp;#x27; =&amp;gt; true,
        &amp;#x27;verify_peer&amp;#x27; =&amp;gt; false,
        &amp;#x27;verify_peer_name&amp;#x27; =&amp;gt; false,
    ],
],&lt;/pre&gt;
  &lt;p id=&quot;DoWM&quot;&gt;Symfony Mailer в Laravel 9 смотрит напрямую в атрибуты:&lt;/p&gt;
  &lt;pre id=&quot;5tsg&quot;&gt;&amp;#x27;smtp&amp;#x27; =&amp;gt; [
    &amp;#x27;transport&amp;#x27; =&amp;gt; &amp;#x27;smtp&amp;#x27;,
    // host, port, username, password, etc...
    &amp;#x27;verify_peer&amp;#x27; =&amp;gt; false,
    &amp;#x27;verify_peer_name&amp;#x27; =&amp;gt; false,
],&lt;/pre&gt;

</content></entry><entry><id>demone:mysql-table-view</id><link rel="alternate" type="text/html" href="https://evgeny.neverov.name/mysql-table-view?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=demone"></link><title>Вертикальный вывод результатов SELECT</title><published>2022-04-15T06:05:09.880Z</published><updated>2022-06-02T08:44:35.780Z</updated><summary type="html">В MySQL конце запроса нужно добавить \G</summary><content type="html">
  &lt;p id=&quot;IISl&quot;&gt;В MySQL конце запроса нужно добавить \G&lt;/p&gt;
  &lt;p id=&quot;TMZc&quot;&gt;В PostgreSQL перед запросом выполнить команду \x on&lt;/p&gt;
  &lt;p id=&quot;Iyz8&quot;&gt;Это я для себя, каждый раз забываю…&lt;/p&gt;

</content></entry></feed>