<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>iTopCN – 安装/升级 iTop</title><link>/docs/install/</link><description>Recent content in 安装/升级 iTop on iTopCN</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Fri, 27 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="/docs/install/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: 安装您的第一个 iTop</title><link>/docs/install/gettingstarted/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/gettingstarted/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何安装您的第一个 iTop 实例。iTop 的安装过程与许多基于 PHP 的应用程序类似。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:gettingstarted">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="安装您的第一个-itop">安装您的第一个 iTop&lt;/h2>
&lt;h3 id="下载和安装">下载和安装&lt;/h3>
&lt;p>iTop 的安装与许多基于 PHP 的应用程序类似：&lt;/p>
&lt;ul>
&lt;li>从 Sourceforge 下载 iTop 安装包&lt;/li>
&lt;li>检查安装先决条件&lt;/li>
&lt;li>适当调整 PHP 和 MySQL 设置&lt;/li>
&lt;li>启动安装向导&lt;/li>
&lt;li>然后通过配置后台任务完成安装&lt;/li>
&lt;/ul>
&lt;h3 id="实施部署">实施部署&lt;/h3>
&lt;p>在您的用户可以开始在生产环境中使用 iTop 之前：&lt;/p>
&lt;ul>
&lt;li>阅读用户账户和配置文件，并确定您将使用哪种认证类型&lt;/li>
&lt;li>阅读实施指南并设置服务目录、客户合同等&lt;/li>
&lt;li>通过配置电子邮件通知和适当的邮件传输来完成安装&lt;/li>
&lt;li>调整配置以微调性能&lt;/li>
&lt;li>做好数据备份的准备&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:gettingstarted">https://www.itophub.io/wiki/page?id=3_2_0:gettingstarted&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/gettingstarted.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 硬件和软件要求</title><link>/docs/install/requirements/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/requirements/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍 iTop 的硬件和软件要求，包括兼容性列表和浏览器支持。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:requirements">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="最低硬件要求">最低硬件要求&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>您的需求&lt;/th>
&lt;th>我们的建议&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>每月创建工单数&lt;/td>
&lt;td>控制台用户&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&amp;lt;200&lt;/td>
&lt;td>&amp;lt; 20&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&amp;lt; 5000&lt;/td>
&lt;td>&amp;lt; 50&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&amp;gt; 5000&lt;/td>
&lt;td>&amp;gt; 50&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>使用 iTop 的最低屏幕分辨率为 1024*768 像素，但分辨率越高越好。&lt;/p>
&lt;p>我们建议使用运行 &lt;strong>Debian 12&lt;/strong> 或 &lt;strong>Ubuntu 24.04 LTS&lt;/strong> 的虚拟机。&lt;/p>
&lt;h2 id="itop-兼容性列表">iTop 兼容性列表&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>iTop&lt;/th>
&lt;th>最低要求 → 最高支持&lt;/th>
&lt;th>已知限制&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;/td>
&lt;td>PHP&lt;/td>
&lt;td>MySQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.3.x&lt;/td>
&lt;td>5.3.6&lt;/td>
&lt;td>5.0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.4.x&lt;/td>
&lt;td>5.3.6&lt;/td>
&lt;td>5.5.3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.5.x&lt;/td>
&lt;td>5.3.6&lt;/td>
&lt;td>5.5.3&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.6.0 / 2.6.1+&lt;/td>
&lt;td>5.6 → 7.2 / 5.6 → 7.3&lt;/td>
&lt;td>5.6&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.7.x / 2.7.7 - 2.7.8&lt;/td>
&lt;td>7.0.8 → 7.4 / 7.1.3 → 7.4&lt;/td>
&lt;td>5.6 → 5.7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2.7.9+&lt;/td>
&lt;td>7.1.3 → 7.4&lt;/td>
&lt;td>5.6 → 5.7&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3.0.x / 3.0.2&lt;/td>
&lt;td>7.1.3 → 7.4 / 7.1.3 → 8.0&lt;/td>
&lt;td>5.7+&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3.1.x&lt;/td>
&lt;td>7.4 → 8.1&lt;/td>
&lt;td>5.7+&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3.2.x&lt;/td>
&lt;td>8.1 → 8.3&lt;/td>
&lt;td>5.7+&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3.2.3-1&lt;/td>
&lt;td>8.1 → 8.4&lt;/td>
&lt;td>5.7+&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3.3.x&lt;/td>
&lt;td>8.2 → 8.4&lt;/td>
&lt;td>5.7+&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>图例：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>粗体&lt;/strong>：自上一版本以来最低或最高版本发生变化时&lt;/li>
&lt;li>&lt;em>斜体&lt;/em>：最高支持版本，当已知时&lt;/li>
&lt;/ul>
&lt;h2 id="web-浏览器">Web 浏览器&lt;/h2>
&lt;p>推荐使用最新版本的 &lt;strong>Chrome&lt;/strong>（&lt;strong>Firefox&lt;/strong> 也很安全）。&lt;/p>
&lt;ul>
&lt;li>自 2.7.0 起，不再支持 IE9&lt;/li>
&lt;li>自 3.0.0 起，不再支持 IE11&lt;/li>
&lt;li>后续版本的 iTop 将不再支持任何 Internet Explorer 版本&lt;/li>
&lt;li>&lt;strong>Brave&lt;/strong> 与 iTop 有已知的兼容性问题&lt;/li>
&lt;li>&lt;strong>Safari&lt;/strong> 不受 Combodo 支持，但我们知道有人在使用它，报告的问题很少。&lt;/li>
&lt;/ul>
&lt;h2 id="web-服务器">Web 服务器&lt;/h2>
&lt;h3 id="配置您的-web-服务器">配置您的 Web 服务器&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Apache Httpd&lt;/strong>：iTop 包包含 Apache Httpd 的内置配置（.htaccess 文件）。在此处阅读更多：&lt;a href="../install_guides/">iTop 和 Apache HTTPD&lt;/a>&lt;/li>
&lt;li>&lt;strong>Microsoft IIS&lt;/strong>：iTop 包包含 Microsoft IIS 的内置配置（web.config 文件）。在此处阅读更多：&lt;a href="../install_guides/">iTop 和 IIS&lt;/a>&lt;/li>
&lt;li>&lt;strong>NGINX&lt;/strong>：要正确配置 NGINX，请查看此专用页面：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:nginx">iTop 和 NGINX&lt;/a>&lt;/li>
&lt;li>&lt;strong>Suhosin&lt;/strong>：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:suhosin">iTop 和 Suhosin&lt;/a>&lt;/li>
&lt;li>&lt;strong>SELinux&lt;/strong>：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:selinux">iTop 和 SE Linux&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="graphviz">GraphViz&lt;/h3>
&lt;p>iTop 依赖 &lt;strong>Graphviz&lt;/strong> 来生成对象生命周期的图形表示以及影响分析图。&lt;/p>
&lt;ul>
&lt;li>在 Linux 上，graphviz 已经是上述先决条件的一部分，因此无需额外操作。&lt;/li>
&lt;li>在 Windows 上：从网站下载 &lt;a href="https://graphviz.org/download/">Graphviz&lt;/a> 并安装。&lt;/li>
&lt;li>Linux：&lt;code>/user/bin/dot&lt;/code>&lt;/li>
&lt;li>Windows：&lt;code>C:\Program files (x86)\Graphviz 2.68\bin\dot.exe&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="数据库服务器">数据库服务器&lt;/h2>
&lt;p>要选择数据库版本，请查看 &lt;a href="https://mariadb.com/kb/en/mariadb-release-notes/">MariaDB 各版本发布说明&lt;/a> 和 &lt;a href="https://dev.mysql.com/doc/">MySQL 文档&lt;/a>&lt;/p>
&lt;h3 id="mariadb-与-itop-备份的不兼容性">MariaDB 与 iTop 备份的不兼容性&lt;/h3>
&lt;p>以下版本的 MariaDB 会导致 iTop 备份无法工作：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>10.5.x&lt;/th>
&lt;th>10.4.x&lt;/th>
&lt;th>10.3.x&lt;/th>
&lt;th>10.2.x&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>10.5.7&lt;/td>
&lt;td>10.4.16&lt;/td>
&lt;td>10.3.26&lt;/td>
&lt;td>10.2.35&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10.5.8&lt;/td>
&lt;td>10.4.17&lt;/td>
&lt;td>10.3.27&lt;/td>
&lt;td>10.2.36&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>症状：&lt;/p>
&lt;p>当您执行此查询时：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">MariaDB&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#000">sbacmdb&lt;/span>&lt;span style="color:#000;font-weight:bold">]&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;gt;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">select&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">from&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">view_DBServer&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>您会收到此错误：&lt;/p>
&lt;pre tabindex="0">&lt;code>Error: Failed to execute mysqldump: mysqldump: Couldn&amp;#39;t execute &amp;#39;show create table `view_DBServer`&amp;#39;: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near &amp;#39;= 0 and `SoftwareLicence_softwarelicence_id_Licence`.`end_date` &amp;lt; date_format...&amp;#39; at line 1 (1064)
&lt;/code>&lt;/pre>&lt;p>根本原因：这是一个 MariaDB 问题，在以下次要版本中已修复。&lt;/p>
&lt;p>策略：避免这些有问题的 MariaDB 版本。降级到不受影响的版本或升级到已修复的版本：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>10.5.9&lt;/th>
&lt;th>10.4.18&lt;/th>
&lt;th>10.3.28&lt;/th>
&lt;th>10.2.37&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;/table>
&lt;p>变通方法：&lt;/p>
&lt;ul>
&lt;li>在备份前删除视图，视图不是 iTop 本身所需的。&lt;/li>
&lt;li>注意，安装程序会重新创建视图，因此之后需要再次删除它们。&lt;/li>
&lt;/ul>
&lt;p>视图将在 3.0 中完全移除，对于仍在使用它们的人，将提供一个可选的免费扩展。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:requirements">https://www.itophub.io/wiki/page?id=3_2_0:install:requirements&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/requirements.txt · Last modified: 2026/06/11 16:17 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 安装 PHP、Web 服务器和数据库...</title><link>/docs/install/install_guides/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/install_guides/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何在不同操作系统上安装 iTop 所需的 PHP、Web 服务器和数据库软件。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_guides">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="debian-或-ubuntu">Debian 或 Ubuntu&lt;/h2>
&lt;p>要在 Ubuntu/Debian 上安装所需软件，请运行以下命令（以 root 身份）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt-get install apache2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt-get install mariadb-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt-get install php php-mysql php-ldap php-cli php-soap php-json graphviz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt-get install php-xml php-gd php-zip libapache2-mod-php php-mbstring php-curl
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>apt-get install apache2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt-get install mysql-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt-get install php php-mysql php-ldap php-cli php-soap php-json graphviz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt-get install php-xml php-gd php-zip libapache2-mod-php php-mbstring php-curl
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这将安装 Ubuntu/Debian 默认仓库中对应的版本。&lt;/p>
&lt;h2 id="redhatcentos-或-fedora">RedHat、CentOS 或 Fedora&lt;/h2>
&lt;p>要在 RedHat / CentOS / Fedora 上安装所需软件，请运行以下命令（以 root 身份）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>yum install httpd
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>yum install mysql mysql-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>yum install php php-mysql php-xml php-cli php-soap php-ldap php-gd php-zip php-json php-mbstring php-curl graphviz
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="windows">Windows&lt;/h2>
&lt;h3 id="在-iis-上安装-php">在 IIS 上安装 PHP&lt;/h3>
&lt;p>请查看此页面：iTop 和 IIS&lt;/p>
&lt;h3 id="安装-mysql">安装 MySQL&lt;/h3>
&lt;p>如果您还没有 MySQL 数据库服务器，可以将其安装在与应用程序相同的系统上。&lt;/p>
&lt;ul>
&lt;li>访问 MySQL 下载站点：http://www.mysql.com/downloads/mysql/&lt;/li>
&lt;li>下载适合您系统的安装程序：选择名为 &amp;ldquo;MSI Installer&amp;rdquo; 的安装包，32 位或 64 位版本均可。&lt;/li>
&lt;li>通过打开下载的 .msi 文件启动安装。&lt;/li>
&lt;li>按照安装向导的说明进行操作。&lt;/li>
&lt;/ul>
&lt;h2 id="windows-上使用-easyphp-的开发环境">Windows 上使用 easyPHP 的开发环境&lt;/h2>
&lt;p>请参见 iTop 在 Windows 上使用 easyPHP 安装&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_guides">https://www.itophub.io/wiki/page?id=3_2_0:install:install_guides&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/install_guides.txt · Last modified: 2025/07/11 16:22 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 配置 PHP、Web 服务器和数据库...</title><link>/docs/install/php_and_mysql_configuration/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/php_and_mysql_configuration/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍 iTop 所需的 PHP、Web 服务器和数据库服务器配置。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:php_and_mysql_configuration">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="web-服务器">Web 服务器&lt;/h2>
&lt;h3 id="允许将-oql-查询作为参数传递">允许将 OQL 查询作为参数传递&lt;/h3>
&lt;p>在 iTop 中，许多页面会将 OQL 查询作为参数发送。这是无风险的，因为查询在发送给数据库服务器之前，会先由 iTop 进行解释和定制，并转换为单一的只读 SQL 查询。&lt;/p>
&lt;p>换句话说，对于任何查询，iTop 都会：&lt;/p>
&lt;ul>
&lt;li>检查语法和类的有效性&lt;/li>
&lt;li>根据用户权限添加适当的过滤器&lt;/li>
&lt;li>防止注入攻击&lt;/li>
&lt;/ul>
&lt;p>由于 OQL 语法与 SQL 接近，这可能会被 mod_security 等安全系统阻止。您必须允许这些查询才能使用 iTop。例如，使用 mod_security：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-apache" data-lang="apache">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">SecRule&lt;/span> REQUEST_URI &lt;span style="color:#4e9a06">&amp;#34;@beginsWith /pages/UI.php&amp;#34;&lt;/span> \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a40000">&amp;#34;&lt;/span>id:&amp;#39;000013&amp;#39;, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>phase:1, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>t:none, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nolog, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pass, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ctl:ruleRemoveById=942190, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ctl:ruleRemoveById=942360&lt;span style="color:#a40000">&amp;#34;&lt;/span> \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">SecRule&lt;/span> REQUEST_URI &lt;span style="color:#4e9a06">&amp;#34;@beginsWith /pages/ajax.render.php&amp;#34;&lt;/span> \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a40000">&amp;#34;&lt;/span>id:&amp;#39;000013&amp;#39;, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>phase:1, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>t:none, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>nolog, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pass, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ctl:ruleRemoveById=942190, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ctl:ruleRemoveById=942360, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ctl:ruleRemoveById=949110, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ctl:ruleRemoveById=980130, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ctl:ruleRemoveById=920220, \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ctl:ruleRemoveById=942100&lt;span style="color:#a40000">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="临时目录的写入权限">临时目录的写入权限&lt;/h3>
&lt;p>确保 Web 服务器对临时目录具有写入权限。&lt;/p>
&lt;h3 id="apcu">APCu&lt;/h3>
&lt;p>我们强烈建议启用 APCu！有关更多详细信息，请阅读&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:admin:performance">优化 iTop 性能&lt;/a>。&lt;/p>
&lt;p>但是，如果您在多个实例上使用 APCu，在执行&amp;quot;移至生产环境&amp;quot;后，必须在所有实例上清除缓存。由于我们没有工具来执行此操作，实际上这意味着：&lt;/p>
&lt;ul>
&lt;li>要么重启所有 Web 服务器&lt;/li>
&lt;li>要么不使用 APCu&lt;/li>
&lt;/ul>
&lt;h3 id="数据库客户端模块">数据库客户端模块&lt;/h3>
&lt;p>如果您的 iTop 数据库位于与 Web 服务器不同的外部服务器上，您需要在 Web 服务器上安装 MariaDB（或 MySQL）的客户端安装包。&lt;/p>
&lt;h2 id="php">PHP&lt;/h2>
&lt;h3 id="必需扩展">必需扩展&lt;/h3>
&lt;h4 id="其他-php-扩展">其他 PHP 扩展&lt;/h4>
&lt;ul>
&lt;li>&lt;code>php-gd&lt;/code> 是使用 CKEditor 添加图像以及自动调整 HTML 字段中图像大小所必需的。&lt;/li>
&lt;li>PHP LDAP 模块是支持 LDAP 或 Active Directory 认证所必需的。&lt;/li>
&lt;li>加密数据：请查看加密数据以了解需要安装什么才能使用 EncryptedString 属性。&lt;/li>
&lt;/ul>
&lt;h3 id="phpini-设置">php.ini 设置&lt;/h3>
&lt;p>php.ini 中的推荐值摘要：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c4a000">memory_limit&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">256M ; 如有需要可以增加&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c4a000">max_input_vars&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">5000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">; upload_tmp_dir : 应指向一个具有写入权限的目录&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">; 还要检查以下用于附件的选项（请参阅下面的专用章节）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">; 根据您的偏好调整值！&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">; - upload_max_filesize&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">; - max_file_uploads&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">; - post_max_size&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">; - max_input_time&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="max_input_vars">max_input_vars&lt;/h4>
&lt;p>在各种使用场景中，iTop 会向服务器发送大量数据。特别是某些 XHR 查询会发送当前对象结构的描述：属性列表及所有相应属性。如果您的数据模型在对象上添加了大量属性，您可能会在这些屏幕之一上遇到错误行为：&lt;/p>
&lt;ul>
&lt;li>编辑具有许多关系的对象时（iTop 会创建一个包含所有关系的大表单）&lt;/li>
&lt;li>在对象列表中：在&amp;quot;配置此列表&amp;quot;对话框中勾选大量属性后，点击列标题对列表排序&lt;/li>
&lt;li>点击列标题对列表排序&lt;/li>
&lt;li>在&amp;quot;配置此列表&amp;quot;对话框中勾选大量属性后&lt;/li>
&lt;/ul>
&lt;p>此类行为可能由 Web 服务器引起：&lt;code>php.ini&lt;/code> 中的参数 &lt;code>max_input_vars&lt;/code> 定义了发送到服务器的最大数据量。其默认值为 1000，对于具有许多字段的自定义对象可能不够。如果您遇到此类行为，可以将 &lt;code>max_input_vars&lt;/code> 值从 1000 更新为 3000 或 5000，具体取决于需要传输的数据量。&lt;/p>
&lt;h4 id="附件上传">附件上传&lt;/h4>
&lt;p>iTop 能够上传和存储文档（即文件）作为各种对象（工单、CI 等）的附件。这些文档以二进制大对象的形式存储在 iTop 数据库中。为了安全地上传和存储文档，必须在 PHP 和 MySQL 中一致地调整多个设置。&lt;/p>
&lt;p>在 PHP 中，几个变量控制文件上传：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>file_uploads&lt;/code>&lt;/td>
&lt;td>设置为 1 允许文件上传，设置为 0 阻止所有文件上传。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>upload_tmp_dir&lt;/code>&lt;/td>
&lt;td>服务器上存储上传文件的临时位置。确保此参数指向运行 Web 服务器的进程（或在 IIS 使用 Windows 内置认证的情况下，最终用户）可以访问（和写入）的位置，并且有足够的剩余空间。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>upload_max_filesize&lt;/code>&lt;/td>
&lt;td>允许上传的文件的最大大小。值以字节表示。您可以使用 K 表示千字节（=1024 字节）、M 表示兆字节、G 表示千兆字节。例如：4M 表示 4 兆字节。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>max_file_uploads&lt;/code>&lt;/td>
&lt;td>单个网页中可同时上传的最大文件数。iTop 通常一次只上传一个文件。您可以安全地使用默认值 20。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>post_max_size&lt;/code>&lt;/td>
&lt;td>通过 POST 请求发送到服务器的最大数据量。此值必须大于 &lt;code>upload_max_filesize&lt;/code>，因为同一请求将包含一些额外信息（文档标题、操作代码&amp;hellip;）。因此最好在这里设置更大的值。例如，如果 &lt;code>upload_max_filesize&lt;/code> 是 4M，那么 &lt;code>post_max_size&lt;/code> 设置为 5M。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>memory_limit&lt;/code>&lt;/td>
&lt;td>文件上传到服务器后，将在存储到数据库之前读入内存。因此，请确保 &lt;code>memory_limit&lt;/code>（如果启用）至少是 &lt;code>upload_max_filesize&lt;/code> 的 5 倍。&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>max_input_time&lt;/code>&lt;/td>
&lt;td>此值定义服务器读取输入的最大允许时间。这包括上传文件所花费的时间。对于通过慢速连接上传大文件，默认的 60 秒可能不够。&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>大小关系：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>&lt;code>upload_max_filesize&lt;/code>&lt;/th>
&lt;th>&amp;lt;&lt;/th>
&lt;th>&lt;code>post_max_size&lt;/code>&lt;/th>
&lt;th>&amp;lt;&lt;/th>
&lt;th>&lt;code>max_allowed_packet&lt;/code>&lt;/th>
&lt;th>&amp;lt;&lt;/th>
&lt;th>&lt;code>memory_limit&lt;/code>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>php.ini&lt;/td>
&lt;td>&lt;/td>
&lt;td>php.ini&lt;/td>
&lt;td>&lt;/td>
&lt;td>my.cnf&lt;/td>
&lt;td>&lt;/td>
&lt;td>php.ini&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="数据库服务器">数据库服务器&lt;/h2>
&lt;h3 id="数据库服务器用户">数据库服务器用户&lt;/h3>
&lt;p>从 MySQL 5.7 开始，root 用户在 MySQL 中没有显式密码，因此您需要创建一个具有密码的用户账户来安装 iTop。以下命令创建一个具有所有权限的用户 &lt;code>iTop&lt;/code>。这对于测试很有用，但&lt;strong>不是生产环境中的最佳配置&lt;/strong>（因为安全很重要）：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo mysql
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>登录 MySQL 后，执行以下命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">GRANT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">ALL&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">PRIVILEGES&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">ON&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">*&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">TO&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;iTop&amp;#39;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">@&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;%&amp;#39;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">IDENTIFIED&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">BY&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#4e9a06">&amp;#39;some_password&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#000">FLUSH&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">PRIVILEGES&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>iTop 日常使用和安装所需的权限：&lt;/p>
&lt;ul>
&lt;li>&lt;code>SELECT&lt;/code>、&lt;code>INSERT&lt;/code>、&lt;code>UPDATE&lt;/code>、&lt;code>DELETE&lt;/code>：iTop 日常使用&lt;/li>
&lt;li>&lt;code>CREATE&lt;/code>（表）、&lt;code>ALTER&lt;/code>、&lt;code>CREATE VIEW&lt;/code>：安装和数据模型修改&lt;/li>
&lt;li>&lt;code>CREATE&lt;/code>（数据库）：如果您要求安装程序为您创建数据库，以及 ITSM Designer 用于测试数据库创建（在这种情况下也需要 &lt;code>DROP&lt;/code>）&lt;/li>
&lt;li>&lt;code>SHOW VIEW&lt;/code>、&lt;code>LOCK TABLES&lt;/code>：用于备份&lt;/li>
&lt;li>&lt;code>DROP&lt;/code> 和 &lt;code>TRIGGER&lt;/code>：由 DataSynchro 使用&lt;/li>
&lt;li>&lt;code>SUPER&lt;/code>：DataSynchro 需要，仅当 MySQL 启用了二进制日志但没有 &lt;code>--log-bin-trust-function-creators&lt;/code> 选项时（参见 MySQL Bugs: #39489）&lt;/li>
&lt;li>&lt;code>PROCESS&lt;/code>：仅由 &lt;code>CMDBSource::LogDeadLock&lt;/code> 用于获取死锁上下文（&lt;code>SHOW ENGINE INNODB STATUS&lt;/code> 查询）（死锁日志自 iTop 2.7.1 / 3.0.0 起可用，参见 PR #139）&lt;/li>
&lt;/ul>
&lt;h3 id="设置">设置&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ini" data-lang="ini">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c4a000">innodb_buffer_pool_size&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">512M&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c4a000">query_cache_size&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">32M&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c4a000">query_cache_limit&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">1M&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c4a000">innodb_default_row_format&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">DYNAMIC&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#c4a000">innodb_large_prefix&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">; max_allowed_packet : 应设置为大于 php.ini 中 upload_max_filesize 的值&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="国际化">国际化&lt;/h3>
&lt;p>自 iTop 2.5 起，使用的字符集是 utf8mb4，排序规则为 utf8mb4_general_ci。为了让 iTop 正确处理字符串，必须满足以下要求：&lt;/p>
&lt;ul>
&lt;li>MySQL 版本 5.5.3 或更新&lt;/li>
&lt;li>&lt;code>innodb_default_row_format&lt;/code> 变量设置为 &lt;code>DYNAMIC&lt;/code>（默认值）或 &lt;code>COMPRESSED&lt;/code>&lt;/li>
&lt;li>&lt;code>innodb_large_prefix&lt;/code> 设置为 &lt;code>true&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="附件">附件&lt;/h3>
&lt;p>上传的文件存储在 MySQL 数据库中，每个文件一个查询。因此，允许的最大查询大小必须大于上传文件的最大大小。这是通过 MySQL 服务器上 my.cnf 配置文件中的变量 &lt;code>max_allowed_packet&lt;/code> 配置的。&lt;/p>
&lt;h3 id="mysqldump">MySQLDump&lt;/h3>
&lt;p>此实用程序模块在 MariaDB（或 MySQL）的客户端安装包中可用。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:php_and_mysql_configuration">https://www.itophub.io/wiki/page?id=3_2_0:install:php_and_mysql_configuration&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/php_and_mysql_configuration.txt · Last modified: 2025/07/03 12:47 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 使用 TLS 连接 MySQL</title><link>/docs/install/php_and_mysql_tls/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/php_and_mysql_tls/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何配置 iTop 使用 TLS 加密连接到 MySQL 数据库。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:php_and_mysql_tls">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="在-itop-中使用-tls">在 iTop 中使用 TLS&lt;/h2>
&lt;p>如果 iTop 托管在与 MySQL 服务器不同的服务器上，并且使用了共享基础设施，那么您可能希望在应用程序和数据库之间使用加密。&lt;/p>
&lt;p>一种方法是使用 MySQL 安全连接。请参阅官方文档：&lt;a href="https://dev.mysql.com/doc/refman/5.6/en/using-encrypted-connections.html">MySQL 5.6 参考手册 :: 6.4 使用加密连接&lt;/a>&lt;/p>
&lt;p>自版本 2.5 起，iTop 允许使用以下参数：&lt;/p>
&lt;ul>
&lt;li>启用加密：&lt;code>db_tls.enabled&lt;/code>&lt;/li>
&lt;li>证书颁发机构文件：&lt;code>db_tls.ca&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>在 iTop 中使用此类连接之前，您需要检查配置。在 phpinfo（调用 &lt;code>setup/phpinfo.php&lt;/code>）中，您应该在 &amp;ldquo;mysqlnd&amp;rdquo; 部分看到以下内容：&lt;/p>
&lt;ul>
&lt;li>core SSL：supported&lt;/li>
&lt;li>extended SSL：supported&lt;/li>
&lt;/ul>
&lt;p>Combodo 还强烈建议使用以下脚本测试连接：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">&amp;lt;?&lt;/span>&lt;span style="color:#000">php&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ini_set&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;error_reporting&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">E_ALL&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ini_set&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;display_errors&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;1&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">error_reporting&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#204a87;font-weight:bold">E_ALL&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">|&lt;/span>&lt;span style="color:#000">E_STRICT&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">assert_options&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">ASSERT_ACTIVE&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">assert_options&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">ASSERT_WARNING&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">assert_options&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">ASSERT_BAIL&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">true&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$sMySqlHost&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;mysqlserver&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#8f5902;font-style:italic">//TODO
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$iMySqlPort&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">3306&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$sMySqlUser&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;user&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#8f5902;font-style:italic">//TODO
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$sMySqlPassword&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;password&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#8f5902;font-style:italic">//TODO
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$iMySqlFlag&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$sTlsKey&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;/var/mysql/client-key.pem&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#8f5902;font-style:italic">//TODO 修正为正确的值，如未使用则设为 null
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$sTlsCert&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;/var/mysql/client-cert.pem&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#8f5902;font-style:italic">//TODO 修正为正确的值，如未使用则设为 null
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>&lt;span style="color:#000">$sTlsCa&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;/var/mysql/ca.pem&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#8f5902;font-style:italic">//TODO 修正为正确的值，如未使用则设为 null
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">assert&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">is_readable&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$sTlsKey&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Can\&amp;#39;t open SSL Key file&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">assert&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">is_readable&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$sTlsCert&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Can\&amp;#39;t open SSL Cert file&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">assert&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">is_readable&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$sTlsCa&lt;/span>&lt;span style="color:#000;font-weight:bold">),&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;Can\&amp;#39;t open SSL CA file&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Trying to connect using :&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06"> host=&lt;/span>&lt;span style="color:#4e9a06">$sMySqlHost&lt;/span>&lt;span style="color:#4e9a06">, user=&lt;/span>&lt;span style="color:#4e9a06">$sMySqlUser&lt;/span>&lt;span style="color:#4e9a06">, port=&lt;/span>&lt;span style="color:#4e9a06">$iMySqlPort\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;TLS options :&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06"> key=&lt;/span>&lt;span style="color:#4e9a06">$sTlsKey\n&lt;/span>&lt;span style="color:#4e9a06"> cert=&lt;/span>&lt;span style="color:#4e9a06">$sTlsCert\n&lt;/span>&lt;span style="color:#4e9a06"> ca=&lt;/span>&lt;span style="color:#4e9a06">$sTlsCa\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$oMysqli&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#204a87;font-weight:bold">new&lt;/span> &lt;span style="color:#000">mysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">init&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">ssl_set&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$sTlsKey&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$sTlsCert&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$sTlsCa&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">NULL&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">NULL&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">real_connect&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$sMySqlHost&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$sMySqlUser&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$sMySqlPassword&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">null&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$iMySqlPort&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#204a87;font-weight:bold">NULL&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$iMySqlFlag&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">connect_errno&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">die&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;Connect error (&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span> &lt;span style="color:#000">mysqli_connect_errno&lt;/span>&lt;span style="color:#000;font-weight:bold">()&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;): &amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span> &lt;span style="color:#000">mysqli_connect_error&lt;/span>&lt;span style="color:#000;font-weight:bold">()&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">.&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span> &lt;span style="color:#204a87;font-weight:bold">else&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">!&lt;/span>&lt;span style="color:#000">IsOpenedDbConnectionUsingTls&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">))&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">close&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">die&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;The connection can be opened but is not TLS encrypted !&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;Successfully connected using TLS !&lt;/span>&lt;span style="color:#4e9a06">\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$sTlsCipherValue&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">GetMySqlVarValue&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;ssl_cipher&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$sTlsVersionValue&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">GetMySqlVarValue&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;ssl_version&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;TLS cipher=&lt;/span>&lt;span style="color:#4e9a06">$sTlsCipherValue\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">echo&lt;/span> &lt;span style="color:#4e9a06">&amp;#34;TLS version=&lt;/span>&lt;span style="color:#4e9a06">$sTlsVersionValue\n&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">close&lt;/span>&lt;span style="color:#000;font-weight:bold">();&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * &amp;lt;p&amp;gt;DB 连接可以在没有加密的情况下透明地打开（没有抛出错误），即使使用了 TLS 参数。&amp;lt;br&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * 可以调用此方法来确保 DB 连接确实使用了 TLS。
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * &amp;lt;p&amp;gt;我们使用此对象连接：{@link self::$m_oMysqli}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @param \mysqli $oMysqli
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @return boolean true if the connection was really established using TLS
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @throws \MySQLException
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @uses IsMySqlVarNonEmpty
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">function&lt;/span> &lt;span style="color:#000">IsOpenedDbConnectionUsingTls&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$bNonEmptySslVersionVar&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">IsMySqlVarNonEmpty&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;ssl_version&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$bNonEmptySslCipherVar&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">IsMySqlVarNonEmpty&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;ssl_cipher&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$bNonEmptySslVersionVar&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">&amp;amp;&amp;amp;&lt;/span> &lt;span style="color:#000">$bNonEmptySslCipherVar&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @param \mysqli $oMysqli
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @param string $sVarName
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @return bool
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @throws \MySQLException
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @uses GetMySqlVarValue
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">function&lt;/span> &lt;span style="color:#000">IsMySqlVarNonEmpty&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$sVarName&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$sResult&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">GetMySqlVarValue&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$sVarName&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">!&lt;/span>&lt;span style="color:#204a87;font-weight:bold">empty&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$sResult&lt;/span>&lt;span style="color:#000;font-weight:bold">));&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">/**
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @param \mysqli $oMysqli
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @param string $sVarName
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @return string
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @throws \MySQLException
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> *
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> * @uses &amp;#39;SHOW STATUS&amp;#39; queries
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"> */&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">function&lt;/span> &lt;span style="color:#000">GetMySqlVarValue&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#000">$sVarName&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$oResults&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$oMysqli&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">query&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;SHOW SESSION STATUS LIKE &amp;#39;&lt;/span>&lt;span style="color:#4e9a06">$sVarName&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span> &lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">if&lt;/span> &lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">$oResults&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">===&lt;/span> &lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> &lt;span style="color:#204a87;font-weight:bold">false&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$aResults&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$oResults&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">-&amp;gt;&lt;/span>&lt;span style="color:#c4a000">fetch_array&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#000">MYSQLI_NUM&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">$sResult&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#000">$aResults&lt;/span>&lt;span style="color:#000;font-weight:bold">[&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">1&lt;/span>&lt;span style="color:#000;font-weight:bold">];&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">return&lt;/span> &lt;span style="color:#000">$sResult&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>成功时，您应该看到：&lt;/p>
&lt;pre tabindex="0">&lt;code>Trying to connect using :
host=192.168.10.70, user=sha256user, port=3306
TLS options :
key=/var/www/html/client-key.pem
cert=/var/www/html/client-cert.pem
ca=/var/www/html/ca.pem
Successfully connected using TLS !
TLS cipher=DHE-RSA-AES256-SHA
&lt;/code>&lt;/pre>&lt;h2 id="故障排除">故障排除&lt;/h2>
&lt;p>如果您收到关于 &lt;code>--ssl&lt;/code> 或 &lt;code>--ssl-mode&lt;/code> 的警告或错误，例如：&lt;/p>
&lt;p>iTop &amp;gt;= 2.6.2 应该使用 MySQL &amp;gt;= 5.7.0 处理这些警告，如果您仍然遇到这些警告，或者在较低版本或其他 MySQL 供应商中遇到它们，您可以验证：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SELECT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">Version&lt;/span>&lt;span style="color:#000;font-weight:bold">()&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>和&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SELECT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">@@&lt;/span>&lt;span style="color:#204a87;font-weight:bold">version&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>确保您收到的版本和 MySQL 供应商格式类似于：&lt;/p>
&lt;pre tabindex="0">&lt;code>10.3.15-MariaDB-log
&lt;/code>&lt;/pre>&lt;p>这些信息将由 iTop 处理，以根据您的 MySQL 供应商/版本选择正确的参数，因此需要正确填写。&lt;/p>
&lt;p>如果您在使用 mariadb mysqldump 命令时遇到以下错误，请检查您使用的 mysqldump 版本：&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:php_and_mysql_tls">https://www.itophub.io/wiki/page?id=3_2_0:install:php_and_mysql_tls&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/php_and_mysql_tls.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: iTop 和反向代理</title><link>/docs/install/reverse_proxy/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/reverse_proxy/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何配置 iTop 以在反向代理后面正常工作。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:reverse_proxy">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="itop-和反向代理">iTop 和反向代理&lt;/h2>
&lt;p>自版本 2.7.4 起，iTop 与反向代理兼容，前提是正确配置了反向代理。&lt;/p>
&lt;h2 id="http-头">HTTP 头&lt;/h2>
&lt;p>在 iTop 执行的某些阶段（安装、通过 SSO 登录&amp;hellip;），应用程序需要有关客户端浏览器请求的原始 URL 的信息。&lt;/p>
&lt;p>当运行 iTop 的 PHP/Web 服务器通过反向代理访问时，有关实际 HTTP 请求的信息无法通过正常的 HTTP 头获得，因此反向代理&lt;strong>必须&lt;/strong>提供这些附加信息。提供此信息的事实标准是通过使用 &lt;code>X-Forwarded-*&lt;/code> HTTP 头。&lt;/p>
&lt;p>iTop 考虑以下头：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>头名称&lt;/th>
&lt;th>含义&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>X-Forwarded-Host&lt;/code>&lt;/td>
&lt;td>客户端浏览器看到的主机。（例如 itop.mycompany.com）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>X-Forwarded-Port&lt;/code>&lt;/td>
&lt;td>客户端浏览器使用的端口。（例如 80、8080、443&amp;hellip;）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>X-Forwarded-Proto&lt;/code>&lt;/td>
&lt;td>客户端浏览器使用的协议。http 或 https&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>X-Forwarded-Protocol&lt;/code>&lt;/td>
&lt;td>X-Forwarded-Proto 的替代头：客户端浏览器使用的协议。http 或 https&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="安全考虑">安全考虑&lt;/h3>
&lt;p>这些头中的值只有在来自合法来源（即反向代理）时才应该被信任。&lt;/p>
&lt;p>由于 &lt;code>X-Forwarded-*&lt;/code> 头是纯文本 HTTP 头，任何 Web 浏览器客户端都可以轻松地在请求中注入这些头。&lt;/p>
&lt;p>为了消除对可信来源复杂配置的需要（IPv4 或 IPv6 地址范围），iTop 使用以下策略：&lt;/p>
&lt;ul>
&lt;li>iTop 应用程序的&lt;strong>根 URL&lt;/strong> 在应用程序&lt;strong>安装期间&lt;/strong>计算（基于可用的服务器信息和 HTTP 头）。此值会提示给管理员，管理员负责验证它。在这种情况下，&lt;code>X-Forwarded-*&lt;/code> HTTP 头始终被信任。&lt;/li>
&lt;li>当计算重定向 URL 时，iTop 将此计算出的 URL 与存储的根 URL 进行比较。如果计算出的 URL 以根 URL 开头，则可以安全地执行重定向。否则，重定向将指向应用程序的起始页面。只有当您将 &lt;code>behind_reverse_proxy&lt;/code> 配置参数设置为 &lt;code>true&lt;/code> 时，&lt;code>X-Forwarded-*&lt;/code> HTTP 头才会被信任。&lt;/li>
&lt;/ul>
&lt;p>这意味着您的 Web 服务器必须只能由您的代理访问（换句话说，不能直接由所有公共 IP 地址访问）。&lt;/p>
&lt;h2 id="超时重试和自定义错误">超时、重试和自定义错误&lt;/h2>
&lt;p>当 iTop 执行某些耗时操作（安装、移至生产环境、数据库完整性检查）时，如果应用程序响应太慢，反向代理可能会放弃请求。根据代理配置，请求将被报告为错误或自动重新启动！这可能会在应用程序中产生意外错误。&lt;/p>
&lt;p>为防止此类错误发生，请确保：&lt;/p>
&lt;ul>
&lt;li>为 iTop 请求配置&lt;strong>较长的读取超时&lt;/strong>（某些安装任务在大型到中型数据库上可能需要一个小时才能完成）。&lt;/li>
&lt;li>&lt;strong>禁用重试&lt;/strong>（当请求超时时，反向代理可以重试请求，这会破坏 iTop 的某些页面）。&lt;/li>
&lt;li>&lt;strong>禁用代理的自定义错误&lt;/strong>（某些代理可以拦截错误代码并替换响应，这会破坏 iTop 的某些页面）。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:reverse_proxy">https://www.itophub.io/wiki/page?id=3_2_0:install:reverse_proxy&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/reverse_proxy.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: iTop 与 NGINX</title><link>/docs/install/nginx/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/nginx/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何在 NGINX 上配置和运行 iTop。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:nginx">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="转换-apache-配置">转换 Apache 配置&lt;/h2>
&lt;p>你需要手动将 iTop 源代码中的 &lt;code>.htaccess&lt;/code> 文件转换为 NGINX 的配置规则。&lt;/p>
&lt;p>请注意，每次升级后，都应检查是否引入了新的规则。最简单的方式是通过 GitHub 对比文件变更（&lt;a href="https://github.com/Combodo/iTop/compare">示例&lt;/a>）。&lt;/p>
&lt;h2 id="门户配置">门户配置&lt;/h2>
&lt;p>如果你在 NGINX 上运行 iTop 并选择了增强门户（enhanced portal），很可能会在某些门户页面上遇到 404 错误。&lt;/p>
&lt;p>默认情况下，当访问类似 &lt;code>http://localhost/dir/script.php/arg1/arg2&lt;/code> 的 URL 时，NGINX 会认为 &lt;code>script.php&lt;/code> 是一个目录，并尝试执行位于 &lt;code>/dir/script.php/arg1/arg2&lt;/code> 的索引文件（该文件并不存在）。&lt;/p>
&lt;p>在 iTop 中，这意味着当 NGINX 尝试执行：&lt;/p>
&lt;pre tabindex="0">&lt;code>http://localhost/pages/exec.php/browse/faq?exec_module=itop-portal.php&amp;amp;exec_page=index.php
&lt;/code>&lt;/pre>&lt;p>NGINX 实际上会尝试执行 &lt;code>/pages/exec.php/browse/faq&lt;/code>，而这不是一个真实的脚本。&lt;/p>
&lt;p>你需要正确配置 NGINX 服务器，使其能够正确处理这些 URL。&lt;/p>
&lt;p>增强门户基于 Symfony 框架，该框架提供了相关的&lt;a href="https://symfony.com/doc/current/setup/web_server_configuration.html">配置文档&lt;/a>。你可以根据你的实例进行适配。请记住，门户使用的是 &lt;code>/pages/exec.php&lt;/code> 而非 &lt;code>/index.php&lt;/code>。&lt;/p>
&lt;h2 id="推荐配置">推荐配置&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-nginx" data-lang="nginx">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">location&lt;/span> &lt;span style="color:#4e9a06">/&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">try_files&lt;/span> &lt;span style="color:#000">$uri&lt;/span> &lt;span style="color:#000">$uri/&lt;/span> &lt;span style="color:#000;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">404&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">location&lt;/span> &lt;span style="color:#000;font-weight:bold">~&lt;/span> &lt;span style="color:#4e9a06">^(.+\.php)(/.*)$&lt;/span> &lt;span style="color:#000;font-weight:bold">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">fastcgi_pass&lt;/span> &lt;span style="color:#4e9a06">unix:/var/run/php7.2-fpm.sock&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span> &lt;span style="color:#8f5902;font-style:italic"># Debian 系统，具体路径因发行版而异
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic">&lt;/span> &lt;span style="color:#204a87;font-weight:bold">fastcgi_split_path_info&lt;/span> &lt;span style="color:#4e9a06">^(.+\.php)(/.*)&lt;/span>$&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">include&lt;/span> &lt;span style="color:#4e9a06">fastcgi_params&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">fastcgi_param&lt;/span> &lt;span style="color:#4e9a06">SCRIPT_FILENAME&lt;/span> &lt;span style="color:#000">$document_root$fastcgi_script_name&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:nginx">https://www.itophub.io/wiki/page?id=3_2_0:install:nginx&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/nginx.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: iTop 与 SELinux</title><link>/docs/install/selinux/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/selinux/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍在启用 SELinux 的 Linux 发行版上运行 iTop 所需的配置。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:selinux">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;p>某些 Linux 发行版（如 Fedora、RedHat、CentOS 等）默认启用了 SELinux。在使用 iTop 之前，需要进行额外的安全配置。&lt;/p>
&lt;h2 id="基础-selinux-配置">基础 SELinux 配置&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># 允许对 iTop 根目录及其子目录进行读写&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>semanage fcontext -a -t httpd_sys_rw_content_t &lt;span style="color:#4e9a06">&amp;#34;/var/www/html/itop(/.*)?&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># 应用策略&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>restorecon -Rv /var/www/html/itop/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#8f5902;font-style:italic"># 查看已应用的策略&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ls -lZ /var/www/html/itop/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>此基础配置可与 iTop 正常工作。如需应用更严格的权限，你需要具备深入的 SELinux 知识。&lt;/p>
&lt;h2 id="文件写入问题">文件写入问题&lt;/h2>
&lt;p>如果安装过程中提示 iTop 的 &lt;code>conf&lt;/code> 文件夹已存在但无法写入，且目录权限看起来正确，则可以尝试临时关闭 SELinux 上下文检查：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>setenforce &lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这会完全关闭安全上下文检查。&lt;strong>这绝对不适合生产环境&lt;/strong>，但有助于排查问题根源。有关安全上下文的更多信息，请参阅&lt;a href="https://wiki.centos.org/HowTos/SELinux">此处&lt;/a>或&lt;a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/index">此处&lt;/a>。&lt;/p>
&lt;h2 id="连接远程-mysql-服务器">连接远程 MySQL 服务器&lt;/h2>
&lt;p>如果 iTop 无法连接到远程 MySQL 服务器，请使用以下命令检查 SELinux 设置：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>getsebool -a &lt;span style="color:#000;font-weight:bold">|&lt;/span> grep &lt;span style="color:#4e9a06">&amp;#39;httpd&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>输出应类似于：&lt;/p>
&lt;pre tabindex="0">&lt;code>allow_httpd_anon_write –&amp;gt; off
allow_httpd_bugzilla_script_anon_write –&amp;gt; off
allow_httpd_cvs_script_anon_write –&amp;gt; off
allow_httpd_mod_auth_pam –&amp;gt; off
allow_httpd_nagios_script_anon_write –&amp;gt; off
allow_httpd_prewikka_script_anon_write –&amp;gt; off
allow_httpd_squid_script_anon_write –&amp;gt; off
allow_httpd_sys_script_anon_write –&amp;gt; off
httpd_builtin_scripting –&amp;gt; on
httpd_can_network_connect –&amp;gt; off
httpd_can_network_connect_db –&amp;gt; off
httpd_can_network_relay –&amp;gt; off
httpd_can_sendmail –&amp;gt; on
httpd_disable_trans –&amp;gt; off
httpd_enable_cgi –&amp;gt; on
httpd_enable_ftp_server –&amp;gt; off
httpd_enable_homedirs –&amp;gt; on
httpd_rotatelogs_disable_trans –&amp;gt; off
httpd_ssi_exec –&amp;gt; off
httpd_suexec_disable_trans –&amp;gt; off
httpd_tty_comm –&amp;gt; on
httpd_unified –&amp;gt; on
httpd_use_cifs –&amp;gt; off
httpd_use_nfs –&amp;gt; off
&lt;/code>&lt;/pre>&lt;p>如果看到 &lt;code>httpd_can_network_connect_db –&amp;gt; off&lt;/code>，这意味着 Web 服务器被阻止与 MySQL 服务器建立网络连接。&lt;/p>
&lt;p>要更改此安全设置，请以 root 身份执行以下命令：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>setsebool -P httpd_can_network_connect_db on
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="从远程连接-itop">从远程连接 iTop&lt;/h2>
&lt;p>如果你只能从本机连接到 Web 服务器，而无法从远程系统访问，请检查防火墙（iptables）配置。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>firewall-cmd --list-services
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>命令输出应类似于：&lt;/p>
&lt;pre tabindex="0">&lt;code>dhcp-v6-client http mdns ssh
&lt;/code>&lt;/pre>&lt;p>如果列表中没有 &lt;code>http&lt;/code>，则对 Web 服务器的访问将被阻止。要以 root 身份解除阻止，请执行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>firewall-cmd --add-service&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>http
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:selinux">https://www.itophub.io/wiki/page?id=3_2_0:install:selinux&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/selinux.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: iTop 与 Suhosin</title><link>/docs/install/suhosin/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/suhosin/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍 Suhosin 安全扩展与 iTop 的兼容性问题及配置建议。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:suhosin">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;p>&lt;a href="http://www.hardened-php.net/">Suhosin&lt;/a> 是一个额外的安全层，在 PHP 之上执行多项安全检查。如果你的 Web 服务器不暴露在公共互联网上，且你不计划向数百万并发用户交付 iTop 应用，可以考虑适当放宽某些 Suhosin 限制，以换取更多功能。&lt;/p>
&lt;p>以下是已知问题及相关 Suhosin 配置参数：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>默认值&lt;/th>
&lt;th>症状&lt;/th>
&lt;th>建议修复方案&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>suhosin.post.max_vars&lt;/code>&lt;/td>
&lt;td>1000&lt;/td>
&lt;td>编辑包含超过 300 个相关 CI 的工单时失败。无法一次性删除/修改超过 997 个对象。&lt;/td>
&lt;td>在 Suhosin 配置中提高该限制&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>suhosin.get.max_value_length&lt;/code>&lt;/td>
&lt;td>&amp;lt; 1024&lt;/td>
&lt;td>不可预测的影响。iTop 在安装时会检测到此问题。&lt;/td>
&lt;td>在 Suhosin 配置中提高该限制&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>更多关于 Suhosin 的信息：&lt;a href="http://www.hardened-php.net/">http://www.hardened-php.net/&lt;/a>&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:suhosin">https://www.itophub.io/wiki/page?id=3_2_0:install:suhosin&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/suhosin.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 保护 iTop 安装</title><link>/docs/install/itop_setup_protection/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/itop_setup_protection/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何在首次安装后禁用 iTop 安装向导，以减少攻击面。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:itop_setup_protection">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="为什么">为什么&lt;/h2>
&lt;p>首次安装时使用的安装向导应该被禁用，以减少攻击面。有两个文件特别需要注意：&lt;/p>
&lt;ul>
&lt;li>&lt;code>setup/index.php&lt;/code>：当然需要保护&lt;/li>
&lt;li>&lt;code>setup/phpinfo.php&lt;/code>：会泄露大量系统信息（注意：自 iTop 2.5.2、2.6.1 和 2.7.0 起，通过添加认证已降低了风险）&lt;/li>
&lt;/ul>
&lt;h2 id="如何保护">如何保护&lt;/h2>
&lt;p>您不应该删除整个 &lt;code>setup/&lt;/code> 目录，因为它包含 iTop 所需的文件。&lt;/p>
&lt;p>相反，您可以使用适合您所用 Web 服务器的文件来阻止 Web 访问。&lt;code>data/&lt;/code> 目录中已经有这样的文件，例如：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Apache httpd&lt;/strong>：https://github.com/Combodo/iTop/blob/develop/data/.htaccess&lt;/li>
&lt;li>&lt;strong>Microsoft IIS&lt;/strong>：https://github.com/Combodo/iTop/blob/develop/data/web.config&lt;/li>
&lt;/ul>
&lt;h2 id="itop-更新">iTop 更新&lt;/h2>
&lt;p>为了方便 iTop 更新，您可能希望自动化该过程。请参阅&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_wizard">自动化安装&lt;/a>。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:itop_setup_protection">https://www.itophub.io/wiki/page?id=3_2_0:install:itop_setup_protection&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/itop_setup_protection.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 安装 iTop</title><link>/docs/install/installing_itop/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/installing_itop/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何在 Ubuntu 上快速安装 iTop。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:installing_itop">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="在-ubuntu-上快速安装">在 Ubuntu 上快速安装&lt;/h2>
&lt;p>（其他环境的命令请参阅&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_guides">安装指南&lt;/a>）&lt;/p>
&lt;h3 id="安装-itop">安装 iTop&lt;/h3>
&lt;p>运行以下命令在 Ubuntu 上使用 Apache 和 MariaDB 安装 iTop：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt-get update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt-get install mariadb-server libapache2-mod-php php php-mysql php-cli php-json graphviz php-xml php-gd php-zip php-curl php-soap php-mbstring php-apcu php-ldap php-imap
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget https://sourceforge.net/projects/itop/files/latest/download -O /tmp/itop.zip
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo unzip /tmp/itop.zip &lt;span style="color:#4e9a06">&amp;#34;web/*&amp;#34;&lt;/span> -d /var/www/html/itop
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo mv /var/www/html/itop/web/* /var/www/html/itop
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo rmdir /var/www/html/itop/web
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo setfacl -dR -m u:&lt;span style="color:#4e9a06">&amp;#34;www-data&amp;#34;&lt;/span>:rwX /var/www/html/itop/data /var/www/html/itop/log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo setfacl -R -m u:&lt;span style="color:#4e9a06">&amp;#34;www-data&amp;#34;&lt;/span>:rwX /var/www/html/itop/data /var/www/html/itop/log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo setfacl -m u:&lt;span style="color:#4e9a06">&amp;#34;www-data&amp;#34;&lt;/span>:rwX /var/www/html/itop/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo mkdir /var/www/html/itop/env-production /var/www/html/itop/env-production-build /var/www/html/itop/env-test /var/www/html/itop/env-test-build
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo chown www-data: /var/www/html/itop/conf /var/www/html/itop/env-production /var/www/html/itop/env-production-build /var/www/html/itop/env-test /var/www/html/itop/env-test-build
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="启动安装">启动安装&lt;/h3>
&lt;p>从 Web 浏览器启动安装，访问此 URL：&lt;code>https://myserver.mydomain.com/itop/setup&lt;/code>，然后按照&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_wizard">安装向导&lt;/a>操作。&lt;/p>
&lt;h3 id="安装完成后">安装完成后&lt;/h3>
&lt;ul>
&lt;li>确保应用程序可访问并了解用户界面：&lt;a href="../../enduser/01-connecting_to_itop/">您首次连接 iTop&lt;/a>。&lt;/li>
&lt;li>创建 iTop 应用程序可供用户使用的最小对象集：请遵循&lt;a href="../../implementation/">实施指南&lt;/a>。&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:installing_itop">https://www.itophub.io/wiki/page?id=3_2_0:install:installing_itop&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/installing_itop.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 安装向导 [iTop 文档]</title><link>/docs/install/install_wizard/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/install_wizard/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍 iTop 安装向导的详细步骤。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_wizard">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="安装向导">安装向导&lt;/h2>
&lt;ul>
&lt;li>确保您有一个配置正确的 Apache/PHP 实例正在运行。&lt;/li>
&lt;li>将 &amp;ldquo;web&amp;rdquo; 目录的内容解压到 Web 服务器提供服务的目录中（例如 Linux 上的 &lt;code>/var/www/html/itop&lt;/code> 或 Windows/IIS 上的 &lt;code>C:\inetpub\wwwroot\itop&lt;/code>）。&lt;/li>
&lt;li>设置适当的权限（请参阅&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:itop_setup_protection">专用 Wiki 页面&lt;/a>）。&lt;/li>
&lt;li>将 Web 浏览器指向文件已解压目录对应的 URL（例如 &lt;code>http://localhost/itop&lt;/code>），然后按照屏幕上的指示操作。&lt;/li>
&lt;/ul>
&lt;p>iTop 提供了一个分步向导来安装应用程序。&lt;/p>
&lt;h3 id="第一步检查配置和先决条件">第一步：检查配置和先决条件&lt;/h3>
&lt;p>安装的第一步是检查配置的一致性、Web 服务器用户的权限以及 MySQL、PHP 和可选 PHP 扩展的先决条件。&lt;/p>
&lt;h3 id="第二步选择安装类型">第二步：选择安装类型&lt;/h3>
&lt;p>第二步提供选择：升级现有 iTop 实例或从头开始安装应用程序。&lt;/p>
&lt;p>如果您选择安装新实例，向导的第三步将提示您接受许可协议。&lt;/p>
&lt;h3 id="第四步数据库连接信息">第四步：数据库连接信息&lt;/h3>
&lt;p>向导的第四步提示您输入连接 MySQL 的凭据以及用于安装 iTop 的数据库。请确保提供一个具有足够权限的账户来安装和运行 iTop。此账户需要在数据库中创建表、触发器和视图，以及在升级时删除视图。如果您选择让安装程序为您创建新数据库，此账户需要有足够的权限来执行此操作。&lt;/p>
&lt;p>您还可以指定一个前缀，该前缀将添加到 iTop 在数据库中创建的所有表和视图的名称中。如果您想在同一个 MySQL 数据库中安装多个 iTop，这很有用，但建议避免这样做。最好创建多个数据库。&lt;/p>
&lt;p>请注意，数据库服务器不需要与 PHP/Web 服务器在同一台物理服务器上；如果您喜欢采用双层架构，或者连接到已安装的 MySQL 服务器，它可以是远程主机。&lt;/p>
&lt;h3 id="管理员账户">管理员账户&lt;/h3>
&lt;p>向导的下一步提示您输入管理员账户的信息。iTop 认证可以依赖外部机制（LDAP、Active Directory 或 JASIG-CAS），但安装要求至少创建一个具有本地密码的管理员账户。&lt;/p>
&lt;h3 id="其他信息">其他信息&lt;/h3>
&lt;p>下一个屏幕提示您输入几个其他信息：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>默认语言&lt;/strong>：这是登录屏幕的语言以及新创建用户账户的默认语言。&lt;/li>
&lt;li>&lt;strong>访问 iTop 的 URL&lt;/strong>：如果用户将通过不同的 URL 访问 iTop（通过 DNS 别名、不同的 IP 地址等），请更改此值。&lt;/li>
&lt;li>&lt;strong>示例数据&lt;/strong>：如果您想快速体验 iTop，请安装示例数据。示例数据提供一些示例配置项（服务器、应用程序、联系人）以及服务目录的默认设置，以确保应用程序的快速部署。如果您正在部署 iTop 的生产实例并想要一个&amp;quot;干净&amp;quot;的安装，请不要选择此选项。&lt;/li>
&lt;/ul>
&lt;h3 id="配置-cmdb">配置 CMDB&lt;/h3>
&lt;p>CMDB 由 5 个模块组成：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>配置管理核心模块&lt;/strong>：始终安装。此模块提供 iTop 中必须始终存在的基本对象：组织、位置、联系人以及一些常见的 CI，如服务器、组、应用程序等。&lt;/li>
&lt;li>&lt;strong>数据中心管理模块&lt;/strong>：提供用于管理数据中心物流的配置项：机架、机箱、电源（PDU、电源&amp;hellip;）。如果您不管理数据中心，可能不需要此模块。&lt;/li>
&lt;li>&lt;strong>终端用户设备模块&lt;/strong>：定义与终端用户相关的设备：电话、PC、平板电脑&amp;hellip; 如果您不计划在 iTop 中管理此类设备，可以取消选中此选项。&lt;/li>
&lt;li>&lt;strong>高级存储管理模块&lt;/strong>：定义与存储设备管理相关的配置项：SAN 交换机、NAS、磁带库和磁带等。它是可选的。&lt;/li>
&lt;li>&lt;strong>虚拟化管理模块&lt;/strong>：定义虚拟机、虚拟机管理程序、集群等。如果您不计划在 iTop 中管理虚拟设备，可以取消选中它。&lt;/li>
&lt;/ul>
&lt;h3 id="配置服务管理">配置服务管理&lt;/h3>
&lt;p>iTop 中的服务管理有两种风格。选择最能代表您情况的选项：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>企业服务管理&lt;/strong>：最适合描述同一基础设施用于向一组客户交付服务的情况。客户可以是同一组织的内部实体或外部客户。&lt;/li>
&lt;li>&lt;strong>服务提供商服务管理&lt;/strong>：最适合用于交付/支持客户的基础设施对每个客户是特定的情况，客户之间几乎没有重叠（共享）。&lt;/li>
&lt;/ul>
&lt;p>这两个模块的文档集中在：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:datamodel:itop-service-mgmt">服务管理（服务、SLA、合同）模块&lt;/a>。&lt;/p>
&lt;h3 id="配置工单管理">配置工单管理&lt;/h3>
&lt;p>如果您计划在 iTop 中管理工单，基本上有两个选项：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>简单工单&lt;/strong>：最适合实现简单流程，其中事件和用户请求之间几乎没有区别。所有工单共享相同的生命周期，您可以随时更改工单的分类。如果您计划让最终用户通过门户直接创建工单，无论是提交服务请求还是报告事件，这个选择可能是合适的。&lt;/li>
&lt;li>&lt;strong>ITIL 合规工单&lt;/strong>：最适合实现严格的 ITIL 合规流程。用户请求和事件工单之间有明确的区别。（您可以选择仅部署其中一个流程或两者都部署。）&lt;/li>
&lt;/ul>
&lt;p>当然，您也可以选择不在 iTop 中管理此类工单。在这种情况下，选择第三个选项。&lt;/p>
&lt;h3 id="配置变更管理">配置变更管理&lt;/h3>
&lt;p>如果您计划在 iTop 中实施变更管理，也有两个选项：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>简单变更管理&lt;/strong>：提供一种单一类型的通用变更请求工单。&lt;/li>
&lt;li>&lt;strong>ITIL 合规变更管理&lt;/strong>：提供完整的 ITIL 合规变更流程集，包括标准、例行和紧急变更工单。&lt;/li>
&lt;/ul>
&lt;p>您也可以通过选择第三个选项来完全停用 iTop 中的变更管理。&lt;/p>
&lt;h3 id="其他-itil-流程">其他 ITIL 流程&lt;/h3>
&lt;p>除了变更和事件管理之外，还可以通过选择相应的工单类型来部署另外两种 ITIL 合规流程：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>问题管理&lt;/strong>&lt;/li>
&lt;li>&lt;strong>已知错误和 FAQ&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h3 id="启动安装">启动安装&lt;/h3>
&lt;p>完成所有选择后，将显示摘要。您可以点击每个部分的&amp;quot;加号&amp;quot;按钮来查看您的选择。&lt;/p>
&lt;p>要开始实际的 iTop 安装，请点击&amp;quot;安装！&amp;ldquo;按钮。&lt;/p>
&lt;p>安装进度将显示一个移动的进度条。&lt;/p>
&lt;p>安装完成后，您可以：通过点击&amp;quot;工单管理手动说明&amp;quot;链接查看关于设置后台任务的说明。或者通过点击&amp;quot;进入 iTop&amp;quot;按钮立即进入 iTop。&lt;/p>
&lt;p>恭喜，您已成功安装 iTop！&lt;/p>
&lt;h3 id="自动化安装">自动化安装&lt;/h3>
&lt;p>iTop 的安装通常使用 &amp;ldquo;setup&amp;rdquo; 页面以交互方式进行。然而，一旦安装页面收集了有关所需配置的信息，实际的安装过程就是完全无人值守的，因此可以自动化。&lt;/p>
&lt;h3 id="安装时的主题预编译">安装时的主题预编译&lt;/h3>
&lt;p>此功能是安装的一个优化，可以显著节省主题处理时间。&lt;/p>
&lt;p>有关更多详细信息，请参阅&lt;a href="../../customization/how-to/user-interface/theme/">主题预编译&lt;/a>。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_wizard">https://www.itophub.io/wiki/page?id=3_2_0:install:install_wizard&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/install_wizard.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 升级 iTop</title><link>/docs/install/upgrading_itop/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/upgrading_itop/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何升级 iTop，包括升级前的检查清单和手动/自动升级步骤。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:upgrading_itop">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="升级前检查">升级前检查&amp;hellip;&lt;/h2>
&lt;h3 id="软件要求">软件要求&lt;/h3>
&lt;p>仔细阅读要求，自您上次安装/升级 iTop 实例以来，它们可能已经发生了变化：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:requirements">硬件和软件要求&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:php_and_mysql_configuration">配置 PHP、Web 服务器和数据库&amp;hellip;&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="发行说明">发行说明&lt;/h3>
&lt;p>为什么要升级？新版本带来了哪些功能：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>iTop 版本&lt;/th>
&lt;th>2.7&lt;/th>
&lt;th>3.0&lt;/th>
&lt;th>3.1&lt;/th>
&lt;th>3.2&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>新功能&lt;/td>
&lt;td>&lt;a href="../../release/start/">2.7 新功能&lt;/a>&lt;/td>
&lt;td>&lt;a href="../../release/start/">3.0 新功能&lt;/a>&lt;/td>
&lt;td>&lt;a href="../../release/start/">3.1 新功能&lt;/a>&lt;/td>
&lt;td>&lt;a href="../../release/whats_new/">3.2 新功能&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>变更日志&lt;/td>
&lt;td>&lt;a href="../../release/change_log/">累积变更日志&lt;/a>（包含每个子版本的详尽变更列表）&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="迁移说明">迁移说明&lt;/h3>
&lt;p>在将 iTop 实例升级到新版本之前，请阅读升级路径上的所有迁移说明！例如，如果您从 2.7.x 升级到 3.2.0，您必须阅读以下迁移说明：&lt;a href="../migration_notes/">2.7 到 3.0&lt;/a> 和 &lt;a href="../migration_notes/">3.0 到 3.1&lt;/a> 和 &lt;a href="../migration_notes/">3.1 到 3.2&lt;/a>。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>目标版本&lt;/th>
&lt;th>2.7&lt;/th>
&lt;th>3.0&lt;/th>
&lt;th>3.1&lt;/th>
&lt;th>3.2&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>迁移说明&lt;/td>
&lt;td>&lt;a href="../migration_notes/">2.6 到 2.7&lt;/a>&lt;/td>
&lt;td>&lt;a href="../migration_notes/">2.7 到 3.0&lt;/a>&lt;/td>
&lt;td>&lt;a href="../migration_notes/">3.0 到 3.1&lt;/a>&lt;/td>
&lt;td>&lt;a href="../migration_notes/">3.1 到 3.2&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="扩展兼容性">扩展兼容性&lt;/h3>
&lt;p>在升级之前，检查您所有已安装的扩展是否与新版本兼容！&lt;/p>
&lt;p>已安装扩展及其版本的列表可以在&amp;quot;关于 iTop&amp;hellip;&amp;ldquo;对话框中找到，位于&lt;a href="../../enduser/01-connecting_to_itop/">注销菜单&lt;/a>中。&lt;/p>
&lt;p>通过打开每个扩展的文档来检查兼容性。&lt;/p>
&lt;h2 id="流程在测试环境中进行试运行">流程：在测试环境中进行试运行&lt;/h2>
&lt;p>您应该首先在与相同环境（PHP 和 MySQL 版本和配置）和相同数据的测试环境中尝试更新！&lt;/p>
&lt;h2 id="itop-升级">iTop 升级&lt;/h2>
&lt;h3 id="自动升级">自动升级&lt;/h3>
&lt;p>如果您安装的 iTop 实例至少为 2.7.0 版本，您将能够使用应用程序升级器来自动化该过程！它位于&lt;strong>系统 / 应用程序升级&lt;/strong>菜单中。这特别推荐用于安全升级，因为通常很少进行更改！&lt;/p>
&lt;p>iTop 应用程序升级器将检查系统配置，并在要求未满足时警告您。&lt;/p>
&lt;p>如果您因任何原因无法使用 iTop 应用程序更新器（上传大小、写入权限等），请使用以下手动流程。&lt;/p>
&lt;h3 id="手动升级">手动升级&lt;/h3>
&lt;ul>
&lt;li>备份您当前的 iTop 目录（您应该排除 /data/backups）&lt;/li>
&lt;li>将下载的包解压到您的 iTop 目录中：这将创建一个 /web 子目录&lt;/li>
&lt;li>如果您使用了 &lt;code>/webservices/cron.params&lt;/code> 文件，请将其复制到 &lt;code>/web/webservices&lt;/code>&lt;/li>
&lt;li>删除旧版本的核心文件：&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>rm -rf addons datamodels images lib manifest.xml portal application core dictionaries env-test index.php navigator setup webservices approot.inc.php css js pages synchro documentation bootstrap.inc.php web.config node_modules sources resources templates data/cache-production/*
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>您的 iTop 目录现在应包含以下子目录：&lt;code>conf&lt;/code>、&lt;code>data&lt;/code>、&lt;code>env-production&lt;/code>、&lt;code>log&lt;/code>、&lt;code>extensions&lt;/code>、&lt;code>web&lt;/code>（以及如果您安装了它们，可能还有 toolkit 或 collectors）&lt;/li>
&lt;li>iTop 目录级别&lt;strong>没有文件&lt;/strong>。您可能需要删除 &lt;code>bootstrap.inc.php&lt;/code> 和 &lt;code>templates/&lt;/code>（如果存在，自 2.7.0 起）&lt;/li>
&lt;li>通过运行以下命令复制新版本的核心文件，仍在您的 iTop 目录中：&lt;code>cp -r ./web/* .&lt;/code>&lt;/li>
&lt;li>检查权限（您的 Web 服务器用户必须具有访问权限）&lt;/li>
&lt;li>更改 iTop 配置文件使其可写：&lt;code>chmod 644 conf/production/config-itop.php&lt;/code>&lt;/li>
&lt;li>启动安装程序（在浏览器中使用：&lt;code>&amp;lt;your_itop_url&amp;gt;/setup&lt;/code>）&lt;/li>
&lt;li>在第二步，保持&amp;quot;升级&amp;quot;单选按钮选中。检查是否选择了数据库备份&lt;/li>
&lt;li>在所有后续步骤中点击下一步&lt;/li>
&lt;li>您的 iTop 目录现在应包含以下子目录：&lt;code>conf&lt;/code>、&lt;code>data&lt;/code>、&lt;code>env-production&lt;/code>、&lt;code>log&lt;/code>、&lt;code>extensions&lt;/code>、&lt;code>web&lt;/code>（以及如果您安装了它们，可能还有 toolkit 或 collectors）&lt;/li>
&lt;li>iTop 目录级别&lt;strong>没有文件&lt;/strong>&lt;/li>
&lt;li>您可能需要删除 &lt;code>bootstrap.inc.php&lt;/code> 和 &lt;code>templates/&lt;/code>（如果存在，自 2.7.0 起）&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:upgrading_itop">https://www.itophub.io/wiki/page?id=3_2_0:install:upgrading_itop&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/upgrading_itop.txt · Last modified: 2025/02/12 15:00 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 升级向导</title><link>/docs/install/update_wizard/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/update_wizard/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍 iTop 更新向导的详细步骤。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:update_wizard">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="更新向导">更新向导&lt;/h2>
&lt;ul>
&lt;li>确保 iTop 配置文件（&lt;code>conf/production&lt;/code> 中的 &lt;code>config-itop.php&lt;/code>）不是只读的。&lt;/li>
&lt;li>将 Web 浏览器指向 &lt;code>http(s)://location_of_itop/setup&lt;/code> 并按照屏幕上的说明操作。&lt;/li>
&lt;/ul>
&lt;p>用于&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_wizard">安装应用程序&lt;/a>的分步向导在升级时会被复用，但有一些差异。&lt;/p>
&lt;h3 id="第一步检查配置和先决条件">第一步：检查配置和先决条件&lt;/h3>
&lt;p>第一步检查配置的一致性以及 MySQL、PHP 和可选 PHP 扩展的先决条件。在升级过程中可能会失败，因为它可能比以前的版本更严格。例如，在 2.5.0 之后，MySQL 和 PHP 的先决条件将会改变。&lt;/p>
&lt;h3 id="第二步数据库连接和备份">第二步：数据库连接和备份&lt;/h3>
&lt;p>更新的第二步总结了之前在安装中提供的数据库连接信息，并默认建议在应用程序和数据库升级之前创建 iTop 备份。&lt;/p>
&lt;h3 id="第三步其他信息">第三步：其他信息&lt;/h3>
&lt;p>升级的第三步提示您输入几个其他信息，这些信息在升级期间仍然可以更改。&lt;/p>
&lt;h3 id="配置-cmdb">配置 CMDB&lt;/h3>
&lt;p>您不能删除在&lt;strong>初始安装&lt;/strong>时安装的模块，但可以添加一些。&lt;/p>
&lt;h3 id="配置服务管理">配置服务管理&lt;/h3>
&lt;p>在大多数情况下，这是在&lt;strong>初始安装&lt;/strong>时设置的，不能更改。&lt;/p>
&lt;h3 id="配置工单管理">配置工单管理&lt;/h3>
&lt;p>如果您&lt;strong>现在&lt;/strong>想在 iTop 中管理工单，请查看&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_wizard">安装&lt;/a>中的可选选项。一旦在之前的安装中做出了选择，您就不能在&lt;strong>简单&lt;/strong>和 &lt;strong>ITIL 合规&lt;/strong>工单管理之间切换，也不能停用工单管理模块。&lt;/p>
&lt;h3 id="配置变更管理">配置变更管理&lt;/h3>
&lt;p>如果您&lt;strong>现在&lt;/strong>想在 iTop 中管理变更，请查看&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:install_wizard">安装&lt;/a>中的可选选项。一旦在之前的安装中做出了选择，您就不能在&lt;strong>简单&lt;/strong>和 &lt;strong>ITIL 合规&lt;/strong>变更管理之间切换，也不能停用变更管理。&lt;/p>
&lt;h3 id="其他-itil-流程">其他 ITIL 流程&lt;/h3>
&lt;p>您不能删除在&lt;strong>初始安装&lt;/strong>时安装的模块，但可以添加一些。&lt;/p>
&lt;h3 id="其他模块扩展">其他模块/扩展&lt;/h3>
&lt;p>如果您已添加模块/扩展，它们可以在升级过程的此步骤中安装，但&lt;strong>不能删除&lt;/strong>。&lt;/p>
&lt;h3 id="启动升级">启动升级&lt;/h3>
&lt;p>完成所有选择后，将显示摘要。您可以点击每个部分的&amp;quot;加号&amp;quot;按钮来查看您的选择。&lt;/p>
&lt;p>要开始实际的 iTop 升级，请点击&amp;quot;安装！&amp;ldquo;按钮。&lt;/p>
&lt;p>升级进度将显示一个移动的进度条。&lt;/p>
&lt;p>升级完成后，您会看到：&lt;/p>
&lt;p>恭喜，您已成功升级 iTop！&lt;/p>
&lt;h2 id="内部机制">内部机制&lt;/h2>
&lt;p>在安装开始时，iTop 通过 &lt;code>&amp;lt;itop&amp;gt;/data&lt;/code> 下的名为 &lt;code>.readonly&lt;/code> 的文件进入&lt;strong>只读&lt;/strong>模式。应用程序不再可写，因为数据库结构可能会被大幅修改。然后在数据模型编译期间，iTop 通过在同一位置放置名为 &lt;code>.maintenance&lt;/code> 的文件进入&lt;strong>维护&lt;/strong>模式。因为在此阶段不再有有效的 iTop 代码可以使用，即使是只读模式。&lt;/p>
&lt;p>此机制适用于：&lt;/p>
&lt;ul>
&lt;li>安装&lt;/li>
&lt;li>当 iTop Hub 推送扩展时&lt;/li>
&lt;li>当 ITSM Designer 推送新数据模型时（针对 Combodo 客户）&lt;/li>
&lt;li>应用程序升级时&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:update_wizard">https://www.itophub.io/wiki/page?id=3_2_0:install:update_wizard&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/update_wizard.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 3.1.x 到 3.2.0 迁移说明</title><link>/docs/install/migration_notes/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/migration_notes/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档重点介绍将 iTop 迁移到此版本时可能出现的问题。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:migration_notes">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="31x-到-320-迁移说明">3.1.x 到 3.2.0 迁移说明&lt;/h2>
&lt;p>本文档重点介绍将您的 iTop 迁移到此版本时可能出现的问题。&lt;/p>
&lt;ul>
&lt;li>有关新功能的重点，请查看&lt;a href="../../release/whats_new/">新功能&lt;/a>&lt;/li>
&lt;li>有关变更的详尽列表，请查看&lt;a href="../../release/change_log/">变更日志&lt;/a>&lt;/li>
&lt;li>有关 &lt;a href="../../release/whats_new/">3.2 Beta 版本的已知问题&lt;/a>&lt;/li>
&lt;li>&lt;a href="../../release/whats_new/">Combodo 3.2 兼容扩展版本&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="323-特定说明">3.2.3 特定说明&lt;/h2>
&lt;h3 id="安全修复自定义扩展迁移">安全修复：自定义扩展迁移&lt;/h3>
&lt;p>由于安全修复，您可能需要调整您的扩展：&lt;a href="../migration_notes/">需要做什么以及如何做&lt;/a>。&lt;/p>
&lt;p>要确定您的扩展是否需要一些调整，您可以将 iTop 的错误级别设置为 DEBUG，需要修复的 PHP 页面将被记录。&lt;/p>
&lt;p>如果您的 iTop 的所有扩展都已准备就绪，我们建议您将配置参数 &lt;code>security.disable_exec_forced_login_for_all_enpoints&lt;/code> 更改为 &lt;code>false&lt;/code>，以增强 iTop 的安全性，而无需等待后续版本更改默认参数值。&lt;/p>
&lt;h3 id="安全修复参数文件位置">安全修复：参数文件位置&lt;/h3>
&lt;p>由于安全修复，可选的 &lt;code>--param_file&lt;/code> 参数（可用于 CRON、备份、导入、导出等）现在必须位于 iTop 文件夹之外。这在 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:admin:cron">CRON 页面&lt;/a>中已经是推荐做法，现在已被强制执行。&lt;/p>
&lt;h3 id="安全修复电子表格中的报告">安全修复：电子表格中的报告&lt;/h3>
&lt;p>由于安全修复，电子表格导出中的值现在以单引号 (&amp;rsquo;) 为前缀，以避免 CSV 注入。有关更多信息，请参阅该功能的&lt;a href="../../enduser/13-reports_in_excel/">问答部分&lt;/a>。&lt;/p>
&lt;h3 id="安全smtp-服务器证书验证强制执行">安全：SMTP 服务器证书验证强制执行&lt;/h3>
&lt;p>如果您使用 SMTP 服务器的别名通过 iTop 使用 TLS 协议发送电子邮件，请注意 iTop 现在会检查证书的有效性。如果您收到类似 &lt;code>Unable to connect with STARTTLS: stream_socket_enable_crypto(): Peer certificate CN='some.vertified.domain' did not match expected CN='some.uncertified.domain.alias'&lt;/code> 的错误，请将 &lt;code>email_transport_smtp.verify_peer&lt;/code> 配置参数设置为 &lt;code>true&lt;/code>。&lt;/p>
&lt;h3 id="数据模型事件类的权限">数据模型：事件类的权限&lt;/h3>
&lt;p>由于安全修复，&lt;code>Event&lt;/code> 类（及其子类）以前对任何配置文件都可访问。自 iTop 3.2.3 / 3.3.0 起，它们默认仅对 &lt;strong>Administrator&lt;/strong> 和 &lt;strong>SuperUser&lt;/strong> 配置文件可访问。&lt;/p>
&lt;ul>
&lt;li>如果您希望允许其他配置文件读取它们，您应该将 &lt;code>Event&lt;/code> 组添加到所需的配置文件中。&lt;/li>
&lt;li>如果您添加了子类，您应该将它们添加到 &lt;code>grant_by_profile&lt;/code> 类别中，以便它们遵循与原生类相同的安全规则。&lt;/li>
&lt;/ul>
&lt;h3 id="数据模型superuser-配置文件">数据模型：SuperUser 配置文件&lt;/h3>
&lt;p>SuperUser 配置文件（ID 117）已更新，添加了缺失的权限。如果您在自定义中更改了它们，请注意我们更改了以下 XPath 的默认数据模型：&lt;code>/itop_design/user_rights/profiles/profile[(@id=&amp;quot;117&amp;quot;)]/groups/group[@id='Incident' or @id=&amp;quot;Ticket&amp;quot;]&lt;/code>&lt;/p>
&lt;h3 id="通知通过-oauth-和-ssl-的-smtp">通知：通过 OAuth 和 SSL 的 SMTP&lt;/h3>
&lt;p>iTop 3.2.3 带来了一个新的出站/入站邮件组件，此组件比以前的组件更严格，这意味着如果您的配置尚未符合 RFC，您可能需要调整它。通常，如果您将电子邮件传输配置如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-php" data-lang="php">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#39;email_transport&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;SMTP_OAuth&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#39;email_transport_smtp.encryption&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;tls&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#39;email_transport_smtp.host&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;some.smtp-server.com&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">,&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&amp;#39;email_transport_smtp.port&amp;#39;&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&amp;gt;&lt;/span> &lt;span style="color:#4e9a06">&amp;#39;587&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>您尝试发送电子邮件时可能会收到以下错误：&lt;/p>
&lt;pre tabindex="0">&lt;code>Errors: Connection could not be established with host &amp;#34;ssl://some.smtp-server.com:587&amp;#34;: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:0A00010B:SSL routines::wrong version number
&lt;/code>&lt;/pre>&lt;p>要避免/修复此问题，只需将 &lt;code>email_transport_smtp.encryption&lt;/code> 参数从 &lt;code>tls&lt;/code> 更改为 &lt;code>ssl&lt;/code>，如 &lt;a href="../../admin/10-notifications/">SMTP OAuth 故障排除部分&lt;/a>中所述。&lt;/p>
&lt;h3 id="扩展邮件到工单自动化---邮箱用于-imap属性">扩展：邮件到工单自动化 - &amp;ldquo;邮箱（用于 IMAP）&amp;ldquo;属性&lt;/h3>
&lt;p>自扩展 v3.9.0 起，指定要扫描的文件夹（&amp;ldquo;邮箱（用于 IMAP）&amp;ldquo;属性）时，该值必须遵循 &lt;a href="https://datatracker.ietf.org/doc/html/rfc3501">RFC 3501&lt;/a>，这意味着以前容忍的某些格式不再受支持：&lt;/p>
&lt;ul>
&lt;li>根文件夹不得以分隔符开头，例如 &lt;code>/INBOX&lt;/code> 或 &lt;code>/foo&lt;/code> 不受支持，请使用 &lt;code>INBOX&lt;/code> 或 &lt;code>foo&lt;/code>&lt;/li>
&lt;li>路径不得以分隔符开头，例如 &lt;code>/INBOX/foo&lt;/code> 不受支持，请使用 &lt;code>INBOX/foo&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="321-特定说明">3.2.1 特定说明&lt;/h2>
&lt;p>此版本更改了未提供值时强制日期和日期时间属性的处理方式。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>之前&lt;/strong>：当前日期时间（now）会自动设置到此类字段中（导致用户忽略日期并留下无效值）&lt;/li>
&lt;li>&lt;strong>从 iTop 3.2.1 版本起&lt;/strong>：如果未提供值，对象创建/更新将失败。但现在可以在 XML 中为此类属性定义相对默认值：&lt;code>NOW()&lt;/code> → 对象创建时的当前日期（时间）；&lt;code>DATE_ADD(NOW(), INTERVAL 7 DAY)&lt;/code> → 当前日期（时间）+ 7 天；或任何 OQL 支持的计算日期的语法&lt;/li>
&lt;/ul>
&lt;p>何时重要？&lt;/p>
&lt;ul>
&lt;li>如果这些字段是向用户请求的，此 iTop 更改没有影响。&lt;/li>
&lt;li>如果这些字段是通过覆盖 OnInsert 或 OnUpdate 方法自动填充的，同样此 iTop 更改没有影响。&lt;/li>
&lt;li>如果这些字段未向用户展示且未由任何代码设置，那么您需要在这些字段的 XML 标签 &lt;code>default_value&lt;/code> 中设置 &lt;code>NOW()&lt;/code> 以恢复之前的行为。&lt;/li>
&lt;/ul>
&lt;p>如何修复？&lt;/p>
&lt;ul>
&lt;li>这可以在 Designer 中快速完成，或者通过 iTop 扩展完成。&lt;/li>
&lt;li>这可以在升级之前完成，即使在旧版本如 2.7.x 上也可以，因为在 3.2.1 之前，日期和日期时间属性上的默认值会被静默忽略。&lt;/li>
&lt;/ul>
&lt;h2 id="对用户的影响">对用户的影响&lt;/h2>
&lt;p>除了新功能中描述的新内容外，与 iTop 3.1.x 版本相比，现有 iTop 行为没有破坏性更改。&lt;/p>
&lt;h2 id="升级前检查">升级前检查&lt;/h2>
&lt;h3 id="系统">系统&lt;/h3>
&lt;p>iTop 根文件夹下有一个新文件夹 &amp;ldquo;resources&amp;rdquo; 和一个新文件 &amp;ldquo;app.php&amp;rdquo;。如果必要，请更新您的迁移/备份脚本。&lt;/p>
&lt;h4 id="php-版本">PHP 版本&lt;/h4>
&lt;ul>
&lt;li>新的 PHP 最低版本：8.1.0&lt;/li>
&lt;li>新的 PHP 最高版本：8.3.x&lt;/li>
&lt;/ul>
&lt;h4 id="php-扩展">PHP 扩展&lt;/h4>
&lt;p>PHP 扩展 &lt;strong>APCu&lt;/strong> 现在强烈推荐使用，否则性能可能会略有下降。&lt;/p>
&lt;h4 id="mysql--mariadb-版本">MySQL / MariaDB 版本&lt;/h4>
&lt;ul>
&lt;li>MariaDB 最低版本提高到：10.6+&lt;/li>
&lt;li>MySQL 最低版本保持不变：5.7，但 MySQL 不再是推荐选择&lt;/li>
&lt;/ul>
&lt;h3 id="数据库">数据库&lt;/h3>
&lt;h4 id="数据库更新操作">数据库更新操作&lt;/h4>
&lt;p>N°6619 - 附件：将 &lt;code>contact_id&lt;/code> 从 &lt;code>AttributeExternalField&lt;/code> 改为 &lt;code>AttributeExternalKey&lt;/code>&lt;/p>
&lt;ul>
&lt;li>&lt;code>alter_algorithm&lt;/code> 参数设置为 &amp;ldquo;COPY&amp;rdquo; 或 &amp;ldquo;INPLACE&amp;rdquo;。&lt;/li>
&lt;li>在较旧版本的 MariaDB 上构建的 &lt;code>attachment&lt;/code> 表，自那以后从未重建&lt;/li>
&lt;/ul>
&lt;p>有关更多信息，请参阅 &lt;a href="https://mariadb.com/kb/en/innodb-online-ddl-overview/">MariaDB-InnoDB 在线 DDL&lt;/a>&lt;/p>
&lt;p>以下操作由安装程序执行，但可能相当慢，且不在您期望的时间点。您可以在升级前使用以下命令手动运行操作：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">SET&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">SESSION&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">alter_algorithm&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#39;INSTANT&amp;#39;&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">ALTER&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">TABLE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#000">attachment&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">ADD&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#000">contact_id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87">INT&lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">11&lt;/span>&lt;span style="color:#000;font-weight:bold">)&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">DEFAULT&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">ALTER&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">TABLE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#000">attachment&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">ADD&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">INDEX&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#000">contact_id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000;font-weight:bold">(&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#000">contact_id&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">`&lt;/span>&lt;span style="color:#000;font-weight:bold">);&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>然后使用此查询填充联系人信息：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">UPDATE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">attachment&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">att&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">JOIN&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">priv_user&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">us&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">ON&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">att&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">user_id&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">us&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">id&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">SET&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">att&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">contact_id&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">us&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">contactid&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">WHERE&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">att&lt;/span>&lt;span style="color:#000;font-weight:bold">.&lt;/span>&lt;span style="color:#000">contact_id&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">0&lt;/span>&lt;span style="color:#000;font-weight:bold">;&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="扩展自定义代码">扩展/自定义代码&lt;/h3>
&lt;p>像往常一样，某些&lt;a href="../../release/whats_new/">扩展必须同时升级&lt;/a>，其中 4 个需要在之后升级。&lt;/p>
&lt;p>如果您使用 XML 和自定义代码开发了自定义扩展，请检查：&lt;a href="../migration_notes/">开发者检查清单&lt;/a>&lt;/p>
&lt;h4 id="需要升级的扩展">需要升级的扩展&lt;/h4>
&lt;p>检查每个 Combodo 扩展的 &lt;a href="../../release/whats_new/">3.2 兼容版本&lt;/a>，您需要在升级前安装。&lt;/p>
&lt;h4 id="门户主题">门户主题&lt;/h4>
&lt;p>如果您为最终用户门户创建了替换 &lt;code>bootstrap-theme-combodo.scss&lt;/code> 的自定义主题，您需要重新生成它。否则某些元素可能无法正确显示（HTML 编辑器）。&lt;/p>
&lt;h4 id="包含在-itop-中">包含在 iTop 中&lt;/h4>
&lt;h3 id="xml-数据模型">XML 数据模型&lt;/h3>
&lt;h4 id="配置文件-117">配置文件 117&lt;/h4>
&lt;p>iTop Community 3.2.1 中添加了一个 ID 为 117 的新配置文件 &amp;ldquo;Super User&amp;rdquo;。&lt;/p>
&lt;ul>
&lt;li>此配置文件允许委派大多数 iTop 管理员任务，但系统方面除外。&lt;/li>
&lt;li>扩展在定义其带来的对象/功能的访问权限时，应考虑此配置文件。&lt;/li>
&lt;/ul>
&lt;h4 id="用户请求">用户请求&lt;/h4>
&lt;p>用户请求和事件类的 &amp;ldquo;Solution&amp;rdquo; 字段现在支持 HTML。要恢复此数据模型更改，请将以下 XML 添加到扩展中，或要求 Combodo 在 Designer 中为您注入：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;class&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;UserRequest&amp;#34;&lt;/span> &lt;span style="color:#c4a000">_delta=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;if_exists&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;fields&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;field&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;solution&amp;#34;&lt;/span> &lt;span style="color:#c4a000">xsi:type=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;AttributeText&amp;#34;&lt;/span> &lt;span style="color:#c4a000">_delta=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;if_exists&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;format&lt;/span> &lt;span style="color:#c4a000">_delta=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;delete_if_exists&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/field&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/fields&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/class&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;class&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Incident&amp;#34;&lt;/span> &lt;span style="color:#c4a000">_delta=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;if_exists&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;fields&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;field&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;solution&amp;#34;&lt;/span> &lt;span style="color:#c4a000">xsi:type=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;AttributeText&amp;#34;&lt;/span> &lt;span style="color:#c4a000">_delta=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;if_exists&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;format&lt;/span> &lt;span style="color:#c4a000">_delta=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;delete_if_exists&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/field&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/fields&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/class&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="安装程序">安装程序&lt;/h2>
&lt;h2 id="配置文件">配置文件&lt;/h2>
&lt;h2 id="升级后检查操作">升级后检查/操作&lt;/h2>
&lt;h3 id="重命名您的触发器">重命名您的触发器&lt;/h3>
&lt;p>由于新的取消订阅机制，触发器 &amp;ldquo;Description&amp;rdquo; 字段将对控制台用户可见，作为他们收到的通知的标识符，因此该描述应该解释&lt;strong>何时&lt;/strong>生成此触发器（他们可能会根据触发器类型猜测，但显式文本可能更容易理解）以及&lt;strong>谁&lt;/strong>接收它们。&lt;/p>
&lt;h3 id="连接新闻">连接新闻&lt;/h3>
&lt;p>iTop 3.2.0 带有 3 个新的 &amp;ldquo;通过 Newsroom 通知&amp;rdquo; 操作：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>提及人员通知&lt;/strong>：自动链接到所有现有的 &amp;ldquo;Trigger (on object mention)&amp;quot;，在 &amp;ldquo;Mentioned filter&amp;rdquo; 字段中搜索 &amp;ldquo;Person&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>工单分配时通知代理&lt;/strong>：与 &amp;ldquo;Trigger (on entering a state)&amp;rdquo; 链接，类为 &amp;ldquo;User Request&amp;rdquo;，状态为 &amp;ldquo;assigned&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>通过门户更新公共日志时通知&lt;/strong>：与 &amp;ldquo;Trigger (when updated from the portal)&amp;rdquo; 和 &amp;ldquo;Trigger (when updated by mail)&amp;rdquo; 链接，两者类均为 &amp;ldquo;User Request&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>所有 &amp;ldquo;Trigger (on object mention)&amp;rdquo; 触发器的 &amp;ldquo;Subscription policy&amp;rdquo; 字段（在 3.2.0 中添加的字段）设置为 &amp;ldquo;Force at least one channel (News or Email)&amp;quot;，因为默认情况下我们不希望 iTop 用户在某个对象日志中提到他们的名字时取消订阅所有渠道。&lt;/p>
&lt;h3 id="移除搜索-brick">移除搜索 Brick&lt;/h3>
&lt;p>如果您不希望在标准门户中看到新的搜索 brick，请在 Designer 中添加以下行（针对 Combodo 客户），或创建一个执行此操作的 iTop 扩展。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;module_design&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;itop-portal&amp;#34;&lt;/span> &lt;span style="color:#c4a000">xsi:type=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;portal&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;bricks&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;brick&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;manage-all-tickets-for-portal-user&amp;#34;&lt;/span> &lt;span style="color:#c4a000">xsi:type=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Combodo\iTop\Portal\Brick\ManageBrick&amp;#34;&lt;/span> &lt;span style="color:#c4a000">_delta=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;delete&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;brick&lt;/span> &lt;span style="color:#c4a000">id=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;search-within-tickets-for-portal-user&amp;#34;&lt;/span> &lt;span style="color:#c4a000">xsi:type=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;Combodo\iTop\Portal\Brick\FilterBrick&amp;#34;&lt;/span> &lt;span style="color:#c4a000">_delta=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;delete&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#204a87;font-weight:bold">&amp;lt;/bricks&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">&amp;lt;/module_design&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="x-content-type-options-http-头和-corb-保护">X-Content-Type-Options HTTP 头和 CORB 保护&lt;/h3>
&lt;p>自 iTop 2.7.10 / 3.0.4 / 3.1.2 / 3.2.0 起，&lt;code>X-Content-Type-Options&lt;/code> HTTP 头以 &lt;code>nosniff&lt;/code> 值发送。这可能会触发某些资源的 CORB 保护，阻止它们加载（参见 &lt;a href="https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md#determining-whether-a-response-is-corb_protected">Chromium CORB 说明&lt;/a>）。&lt;/p>
&lt;p>为缓解此问题，在 iTop 核心中对应的资源上禁用发送此 HTTP 头。由于某些扩展可能会受到影响，可以将 &lt;code>security.enable_header_xcontent_type_options&lt;/code> 配置参数设置为 &lt;code>false&lt;/code> 以防止发送该头。&lt;/p>
&lt;h2 id="降级">降级&lt;/h2>
&lt;p>🚧 进行中&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:migration_notes">https://www.itophub.io/wiki/page?id=3_2_0:install:migration_notes&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/migration_notes.txt · Last modified: 2026/06/24 10:08 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 将 iTop 移动到不同的 URL [iTop 文档]</title><link>/docs/install/moving_itop/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/install/moving_itop/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本文档介绍如何将 iTop 移动到不同的 URL。更多详细内容请参考 &lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:moving_itop">iTop 官方文档&lt;/a>。&lt;/p>
&lt;/div>
&lt;h2 id="将-itop-移动到不同的-url">将 iTop 移动到不同的 URL&lt;/h2>
&lt;p>在某些情况下，更改 iTop 的 URL 可能会有帮助。更改目录、更改服务器名称或 IP、创建别名都是需要进行此操作的情况。&lt;/p>
&lt;p>更改后，请在&lt;a href="../../admin/06-configuration_editor/configuration-parameters/">配置文件&lt;/a>中设置 &lt;code>app_root_url&lt;/code> 字段，否则应用程序将停止工作！&lt;/p>
&lt;ul>
&lt;li>此字段必须包含用于在应用程序中导航的根 URL。&lt;/li>
&lt;li>此值也用于创建 iTop 生成的电子邮件中的 Web 链接。&lt;/li>
&lt;li>您可以使用 &lt;code>$SERVER_NAME$&lt;/code> 作为服务器名称的占位符。&lt;/li>
&lt;/ul>
&lt;p>请注意，更改此配置参数后，必须重新运行安装程序。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:install:moving_itop">https://www.itophub.io/wiki/page?id=3_2_0:install:moving_itop&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/install/moving_itop.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item></channel></rss>