<?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>dans</title><subtitle>В разработке... 👩‍💻</subtitle><author><name>dans</name></author><id>https://teletype.in/atom/da-ns</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/da-ns?offset=0"></link><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/da-ns?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-17T09:09:06.951Z</updated><entry><id>da-ns:VPwXSQk7-tn</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/VPwXSQk7-tn?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>MS Word | Заголовок и таблица всегда на одной странице</title><published>2025-12-19T08:33:14.776Z</published><updated>2025-12-19T08:33:14.776Z</updated><summary type="html">Часто в последнее время приходится работать с шаблонами MS Word для генерации документов. Одна из типовых задач: сделать, чтобы заголовки таблицы не отделялись от основного содержимого.</summary><content type="html">
  &lt;p id=&quot;bDqE&quot;&gt;Часто в последнее время приходится работать с шаблонами MS Word для генерации документов. Одна из типовых задач: сделать, чтобы заголовки таблицы не отделялись от основного содержимого.&lt;/p&gt;
  &lt;p id=&quot;hm3G&quot;&gt;Алгоритм: &lt;/p&gt;
  &lt;ul id=&quot;sNZz&quot;&gt;
    &lt;li id=&quot;UP7E&quot;&gt;Выделить все строки, которые будут переноситься как целый объект.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;1aVG&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/67/6b/676b2990-2ece-42c8-8b61-6aecf4fd1f2b.png&quot; width=&quot;1059&quot; /&gt;
      &lt;figcaption&gt;Шаг 1. Заголовок и таблица всегда на одной странице&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;ul id=&quot;Zw64&quot;&gt;
    &lt;li id=&quot;BHie&quot;&gt;В контекстном меню выбрать &amp;quot;Абзац&amp;quot;, вкладка &amp;quot;Положение на странице&amp;quot;, установить флажки &amp;quot;Не отрывать от следующего&amp;quot; и &amp;quot;Не разрывать абзац&amp;quot;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;Izfn&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/e2/68/e2689d7b-09cf-4761-9564-2dd01c5b82f2.png&quot; width=&quot;1092&quot; /&gt;
      &lt;figcaption&gt;Шаг 2. Заголовок и таблица всегда на одной странице&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;ul id=&quot;1Hem&quot;&gt;
    &lt;li id=&quot;6iLZ&quot;&gt;Включить режим отображения скрытых символов форматирования.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;6Mz4&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/2f/26/2f26e476-4324-4a7b-b5b5-ae8e7f3b5d02.png&quot; width=&quot;1176&quot; /&gt;
      &lt;figcaption&gt;Шаг 3. Заголовок и таблица всегда на одной странице&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;ul id=&quot;tlig&quot;&gt;
    &lt;li id=&quot;gnhG&quot;&gt;Убедиться, что в конце шаблона последний символ не имеет свойств присоединения к следующему за ним блоку.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;figure id=&quot;32FR&quot; class=&quot;m_column&quot;&gt;
      &lt;img src=&quot;https://img3.teletype.in/files/6b/07/6b070df3-8be2-40d7-b1b4-070f8ebcb8e2.png&quot; width=&quot;962&quot; /&gt;
      &lt;figcaption&gt;Шаг 4. Заголовок и таблица всегда на одной странице&lt;/figcaption&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;p id=&quot;7q4K&quot;&gt;&lt;em&gt;Если галочки &amp;quot;Не отрывать от следующего&amp;quot; или &amp;quot;Не разрывать абзац&amp;quot; не сняты у последней строки, то рядом с последним символом будет стоять точка (черный маленький квадратик). Это приведет к тому, что блок при генерации будет цепляться к следующим строкам документа и могут появится нежелательные переносы.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;aBed&quot;&gt;Это всё. Спасибо за внимание.&lt;/p&gt;

</content></entry><entry><id>da-ns:chmod-calculator</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/chmod-calculator?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>Chmod Calculator</title><published>2025-06-05T13:24:00.662Z</published><updated>2025-06-05T13:24:00.662Z</updated><category term="poleznye-ssylki" label="Полезные ссылки"></category><summary type="html">Утилита для расчета числового или символического значения для набора разрешений файлов/папок на серверах Linux</summary><content type="html">
  &lt;p id=&quot;lfJx&quot;&gt;Утилита для расчета числового или символического значения для набора разрешений файлов/папок на серверах Linux:&lt;/p&gt;
  &lt;p id=&quot;uRMo&quot;&gt;&lt;a href=&quot;https://chmod-calculator.com/&quot; target=&quot;_blank&quot;&gt;https://chmod-calculator.com/&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>da-ns:504-outdated-optimize-dep</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/504-outdated-optimize-dep?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>504 (Outdated Optimize Dep) React+Vite</title><published>2025-04-07T09:00:03.495Z</published><updated>2025-04-07T09:04:40.793Z</updated><category term="react" label="React ⚛️"></category><summary type="html">От ошибки поможет избавиться очистка кеша...</summary><content type="html">
  &lt;ol id=&quot;GIGP&quot;&gt;
    &lt;li id=&quot;FpBm&quot;&gt;Остановить сервер.&lt;/li&gt;
    &lt;li id=&quot;l8TO&quot;&gt;Удалить папку: &lt;code&gt;node_modules/.vite/&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;yEES&quot;&gt;Очистить кеш пакетного менеджера: &lt;code&gt;npm cache clean --force&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;YW45&quot;&gt;Переустановить зависимости и запустить сервер: &lt;code&gt;npm i &amp;amp;&amp;amp; npm run dev&lt;/code&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;kMyv&quot;&gt;Источник: &lt;a href=&quot;https://stackoverflow.com&quot; target=&quot;_blank&quot;&gt;stackoverflow.com&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>da-ns:easing-links</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/easing-links?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>Функция плавности / easing</title><published>2024-08-11T07:40:24.042Z</published><updated>2024-08-11T09:43:28.521Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/f7/ae/f7aeaed8-4cf5-4ec9-8efe-e9079362b01e.png"></media:thumbnail><category term="poleznye-ssylki" label="Полезные ссылки"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/2e/77/2e772573-bea0-44c1-9d85-8e6342079313.jpeg&quot;&gt;Функция плавности — это инструмент, который позволяет регулировать степень гладкости или резкости перехода между двумя значениями. Она используется для создания эффекта постепенного изменения, чтобы избежать резких скачков или ступенчатых переходов.</summary><content type="html">
  &lt;p id=&quot;SJMT&quot;&gt;Функция плавности — это инструмент, который позволяет регулировать степень гладкости или резкости перехода между двумя значениями. Она используется для создания эффекта постепенного изменения, чтобы избежать резких скачков или ступенчатых переходов.&lt;/p&gt;
  &lt;p id=&quot;m1Il&quot;&gt;Самая простая функция плавности — линейная. В случае линейной функции изменение значения происходит плавно и равномерно. Но для создания качественных визуальных эффектов может пригодиться не только линейная функция плавности, поскольку в реальной жизни объекты никогда не двигаются с постоянной скоростью.&lt;/p&gt;
  &lt;p id=&quot;BZaW&quot;&gt;&lt;a href=&quot;https://easings.net/&quot; target=&quot;_blank&quot;&gt;https://easings.net/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;FqAd&quot;&gt;На этом сайте можно найти обширный список функций плавности с визуализацией их в нескольких практических вариантах использования, такие как отрисовка градиента, появление/исчезновение объекта через прозрачность, движение, изменение размера. Мне понравилось. Очень наглядно и удобно! Плюс там же есть готовый код для разработки на CSS и JS.&lt;/p&gt;

</content></entry><entry><id>da-ns:links</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/links?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>JavaScript Key Codes</title><published>2024-06-25T11:21:26.938Z</published><updated>2024-08-11T07:41:43.391Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/6a/6d/6a6de9d8-bb75-4277-97d8-704d7032abb3.png"></media:thumbnail><category term="poleznye-ssylki" label="Полезные ссылки"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/79/22/7922959a-b374-4de0-b230-0de643e6402f.png&quot;&gt;Небольшой сервис для отображения данных о событии нажатия клавиш. Пользуюсь вместо справочника.</summary><content type="html">
  &lt;p id=&quot;9qaU&quot;&gt;Небольшой сервис для отображения данных о событии нажатия клавиш. Пользуюсь вместо справочника.&lt;/p&gt;
  &lt;p id=&quot;wOol&quot;&gt;&lt;a href=&quot;https://www.toptal.com/developers/keycode&quot; target=&quot;_blank&quot;&gt;https://www.toptal.com/developers/keycode&lt;/a&gt;&lt;/p&gt;
  &lt;figure id=&quot;iZfQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/79/22/7922959a-b374-4de0-b230-0de643e6402f.png&quot; width=&quot;1065&quot; /&gt;
    &lt;figcaption&gt;JavaScript Key Codes&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry><entry><id>da-ns:GJL-Vm10G1h</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/GJL-Vm10G1h?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>React и проигрывание аудио</title><published>2024-06-12T09:07:10.408Z</published><updated>2024-06-12T09:10:00.842Z</updated><category term="react" label="React ⚛️"></category><summary type="html">Проигрывание звуковых дорожек в React можно сделать с помощью готового хука use-sound. Для этого — установить пакет:</summary><content type="html">
  &lt;p id=&quot;yERr&quot;&gt;Проигрывание звуковых дорожек в React можно сделать с помощью готового хука &lt;code&gt;use-sound&lt;/code&gt;. Для этого — установить пакет:&lt;/p&gt;
  &lt;pre id=&quot;yERr&quot;&gt;npm install use-sound&lt;/pre&gt;
  &lt;p id=&quot;eD2N&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;9X44&quot;&gt;Выполнить импорт хука и файла с аудио-записью:&lt;/p&gt;
  &lt;pre id=&quot;nIlU&quot;&gt;import useSound from &amp;#x27;use-sound&amp;#x27;;
import mySound from &amp;#x27;@/../assets/sounds/sound.mp3&amp;#x27; // assets располагается в папке resources&lt;/pre&gt;
  &lt;p id=&quot;WDsx&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;HQF3&quot;&gt;Использовать в коде так:&lt;/p&gt;
  &lt;pre id=&quot;vI5w&quot;&gt;const MyButton = () =&amp;gt; {
  const [playSound] = useSound(mySound);
  
  return (
    &amp;lt;button onClick={() =&amp;gt; playSound()}&amp;gt;
       Play Sound
    &amp;lt;/button&amp;gt;
  );
};&lt;/pre&gt;
  &lt;p id=&quot;7r1O&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;voqg&quot;&gt;Или так:&lt;/p&gt;
  &lt;pre id=&quot;SF0h&quot;&gt;const MyButton = () =&amp;gt; {
  const [playSound] = useSound(mySound, { volume: 0.7 });
  
  const handleClick = () =&amp;gt; {
    playSound();
    // ...
  };

  return (
    &amp;lt;button onClick={() =&amp;gt; handleClick()}&amp;gt;
       Play Sound
    &amp;lt;/button&amp;gt;
  );
};&lt;/pre&gt;
  &lt;p id=&quot;gFM2&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;eR0i&quot;&gt;Подробности можно посмотреть &lt;a href=&quot;https://www.joshwcomeau.com/react/announcing-use-sound-react-hook/&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt; или на &lt;a href=&quot;https://github.com/joshwcomeau/use-sound&quot; target=&quot;_blank&quot;&gt;гитхаб&lt;/a&gt;.&lt;/p&gt;

</content></entry><entry><id>da-ns:change-state-without-rerendering</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/change-state-without-rerendering?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>Изменение состояния без повторного рендеринга / React</title><published>2024-03-21T11:10:58.487Z</published><updated>2024-06-12T09:09:27.468Z</updated><category term="react" label="React ⚛️"></category><summary type="html">В разработке может возникнуть необходимость поменять состояние, но не вызывать перерисовку компонента (-ов). В этом будет полезен хук useRef...</summary><content type="html">
  &lt;p id=&quot;Lh6L&quot;&gt;Каждый раз, когда состояния (&lt;code&gt;useState&lt;/code&gt;, &lt;code&gt;useReducer&lt;/code&gt;) компонента изменяются, весь компонент рендерится заново. Это означает, что текущий и каждый дочерний, зависимый от этого состояния компонент будет повторно перерисовывать себя.&lt;br /&gt;&lt;br /&gt;В разработке может возникнуть необходимость поменять состояние, но не вызывать перерисовку компонента (-ов). В этом будет полезен хук &lt;code&gt;useRef&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Хук &lt;code&gt;React.useRef()&lt;/code&gt;— это функция, которая возвращает изменяемый объект ссылки. У этого объекта есть свойство под названием &lt;code&gt;current&lt;/code&gt;. Доступ к значению, сохраненному с помощью хука &lt;code&gt;useRef&lt;/code&gt;, можно получить или обновить через свойство &lt;code&gt;current&lt;/code&gt;. Этот объект сохраняет значение в течение всего срока службы компонента.&lt;/p&gt;
  &lt;pre id=&quot;16Qq&quot;&gt;const refValue = React.useRef(&amp;quot;Initial value&amp;quot;); &amp;lt;-- initializing 

refValue.current = &amp;quot;new value&amp;quot;; &amp;lt;-- Assigning new value through &amp;#x27;current&amp;#x27; property

console.log(refValue.current);  &amp;lt;-- Accessing values using &amp;#x27;current&amp;#x27; property
&amp;gt;&amp;gt; &amp;quot;new value&amp;quot; &amp;lt;&amp;lt;&lt;/pre&gt;
  &lt;p id=&quot;KObK&quot;&gt;&lt;br /&gt;Оба хука и &lt;code&gt;useState&lt;/code&gt;, и &lt;code&gt;useRef&lt;/code&gt;могут использоваться для сохранения состояния. Но обновление значений &lt;code&gt;useState&lt;/code&gt;приводит к повторному рендерингу компонента, тогда как для &lt;code&gt;useRef&lt;/code&gt;не происходит повторного рендеринга при обновлении значения.&lt;/p&gt;
  &lt;p id=&quot;vgw2&quot;&gt;&lt;em&gt;Также &lt;code&gt;useRef&lt;/code&gt; используется для сохранения ссылки на элементы DOM-дерева. Но это уже совсем другая тема.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.anshuljain.in/useref&quot; target=&quot;_blank&quot;&gt;Ссылка на источник.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;

</content></entry><entry><id>da-ns:yIQB3cw4g0N</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/yIQB3cw4g0N?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>Не подключаются стили tailwindcss для библиотеки material-tailwind</title><published>2024-02-28T10:25:12.589Z</published><updated>2024-02-28T10:25:12.589Z</updated><summary type="html">Подключила к проекту @material-tailwind/react. Стили, которые используются внутри компонентов библиотеки после сборки отсутствуют.</summary><content type="html">
  &lt;p id=&quot;1KEo&quot;&gt;Подключила к проекту &lt;code&gt;@material-tailwind/react&lt;/code&gt;. Стили, которые используются внутри компонентов библиотеки после сборки отсутствуют. &lt;/p&gt;
  &lt;p id=&quot;9eKX&quot;&gt;Чтобы они попали в сборку в конфиге &lt;code&gt;tailwind.config.js&lt;/code&gt; необходимо добавить путь до компонентов:&lt;/p&gt;
  &lt;pre id=&quot;2UB5&quot; data-lang=&quot;jsx&quot;&gt;...

export default {
    content: [
        ...
        &amp;#x27;./node_modules/@material-tailwind/react/components/**/*.{js,ts,jsx,tsx}&amp;#x27;,
        &amp;#x27;./node_modules/@material-tailwind/react/theme/components/**/*.{js,ts,jsx,tsx}&amp;#x27;    
    ],
    
    ...
};&lt;/pre&gt;

</content></entry><entry><id>da-ns:ngrok-https</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/ngrok-https?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>ngrok / Публикация локального приложения, работающего по протоколу HTTPS</title><published>2023-12-22T11:01:13.076Z</published><updated>2023-12-22T11:05:24.432Z</updated><summary type="html">Можно представить, что ngrok — это входная дверь для ваших приложений.</summary><content type="html">
  &lt;h3 id=&quot;F5F7&quot;&gt;Что такое ngrok?&lt;/h3&gt;
  &lt;blockquote id=&quot;vOfI&quot;&gt;&lt;code&gt;ngrok&lt;/code&gt; — это глобально распределенный обратный прокси-сервер, который защищает и ускоряет ваши приложения и сетевые службы, независимо от того, где вы их запускаете. Можно представить, что &lt;code&gt;ngrok&lt;/code&gt; — это входная дверь для ваших приложений.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ngrok&lt;/code&gt; не зависит от среды, поскольку он может доставлять трафик службам, работающим где угодно, без каких-либо изменений в вашей сетевой среде. Запустите свое приложение на AWS, Azure, Heroku, локальном кластере Kubernetes, Raspberry Pi и даже на своем ноутбуке. С &lt;code&gt;ngrok&lt;/code&gt; все работает так же.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ngrok&lt;/code&gt; — это унифицированная входная платформа, поскольку она объединяет  в одно все компоненты для доставки трафика от ваших сервисов в Интернет. &lt;code&gt;ngrok&lt;/code&gt; объединяет ваш обратный прокси-сервер, балансировщик нагрузки, шлюз API, межсетевой экран, сеть доставки, защиту от DDoS и многое другое.&lt;/blockquote&gt;
  &lt;p id=&quot;mBhm&quot; data-align=&quot;right&quot;&gt;&lt;em&gt;Источник: &lt;a href=&quot;https://ngrok.com/docs/what-is-ngrok/&quot; target=&quot;_blank&quot;&gt;дока по ngrok&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;klsV&quot;&gt;Команда для создания туннеля и публикации приложения, доступного по протоколу HTTPS: &lt;/p&gt;
  &lt;p id=&quot;ztVB&quot;&gt;&lt;code&gt;ngrok http &lt;a href=&quot;http://localhost:8000&quot; target=&quot;_blank&quot;&gt;http://localhost:8000&lt;/a&gt; --scheme=https &lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;3x4V&quot;&gt;После успешного запуска в консоли появится информация о зарегистрированном ресурсе:&lt;/p&gt;
  &lt;figure id=&quot;dNws&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a8/f1/a8f1217d-1731-4dda-bec9-5199b0fc4a43.png&quot; width=&quot;895&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;jE6U&quot;&gt;В строке &lt;code&gt;Forwarding&lt;/code&gt; есть адрес, по которому приложение доступно в Интернете: &lt;code&gt;https://6c8d-178-64-170-208.ngrok-free.app&lt;/code&gt; При завершении сеанса &lt;code&gt;Ctrl+C&lt;/code&gt; туннель будет удален и приложение снова станет недоступно.&lt;/p&gt;
  &lt;p id=&quot;Mcz1&quot;&gt;&lt;br /&gt;Разработчикам это может пригодится, например, для тестирования и отладки подключения платежных систем к проектам.&lt;/p&gt;

</content></entry><entry><id>da-ns:phpp-ssl-cert-error</id><link rel="alternate" type="text/html" href="https://blog.da-ns.ru/phpp-ssl-cert-error?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=da-ns"></link><title>Could not verify SSL certificate</title><published>2023-12-19T08:34:34.762Z</published><updated>2024-03-04T07:58:01.045Z</updated><summary type="html">Could not verify SSL certificate. (Network error [errno 60]: SSL certificate problem: self-signed certificate in certificate chain)</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;LQn5&quot;&gt;Could not verify SSL certificate. (Network error [errno 60]: SSL certificate problem: self-signed certificate in certificate chain)&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;eD17&quot;&gt;Ошибка происходит, если сертификаты SSL не установлены в системе должным образом.&lt;/p&gt;
  &lt;p id=&quot;iBgA&quot;&gt;Можно решить эту проблему следующим образом:&lt;/p&gt;
  &lt;ol id=&quot;9M1W&quot;&gt;
    &lt;li id=&quot;MPpC&quot;&gt;Загрузить файл с обновленным списком сертификатов по ссылке:&lt;br /&gt;&lt;a href=&quot;https://curl.haxx.se/ca/cacert.pem&quot; target=&quot;_blank&quot;&gt;https://curl.haxx.se/ca/cacert.pem&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;BNaM&quot;&gt;Переместить загруженный файл &lt;code&gt;cacert.pem&lt;/code&gt; в локальное безопасное место.&lt;/li&gt;
    &lt;li id=&quot;OPGC&quot;&gt;Обновить файл &lt;code&gt;php.ini:&lt;/code&gt; добавить или обновить путь до сертификата:&lt;br /&gt;&lt;code&gt;openssl.cafile=C:/dev/ssl/cacert.pem&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;BuZJ&quot;&gt;Перезапустить сервер.&lt;/li&gt;
  &lt;/ol&gt;

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