{"id":1791,"date":"2026-02-20T10:32:55","date_gmt":"2026-02-20T02:32:55","guid":{"rendered":"http:\/\/www.dxQerp.cn\/?p=1791"},"modified":"2026-02-20T10:54:12","modified_gmt":"2026-02-20T02:54:12","slug":"roundcube-%e7%b6%b2%e9%a0%81%e9%83%b5%e4%bb%b6-%e5%bf%ab%e9%80%9f%e6%8c%87%e5%8d%97","status":"publish","type":"post","link":"http:\/\/www.dxQerp.cn\/?p=1791","title":{"rendered":"Roundcube \u7db2\u9801\u90f5\u4ef6 \u5feb\u901f\u6307\u5357"},"content":{"rendered":"<div class=\"container\">\n<div id=\"model-response-message-contentr_9d7afb0304b68138\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color preserve-whitespaces-in-response\" dir=\"ltr\" aria-live=\"off\" aria-busy=\"false\">\n<p data-path-to-node=\"1\">\u5728 Rocky Linux 10 \u4e0a\uff0c\u6211\u5011\u9700\u8981 <b data-path-to-node=\"1\" data-index-in-node=\"24\">PHP<\/b>\u3001<b data-path-to-node=\"1\" data-index-in-node=\"28\">Apache (httpd)<\/b> \u548c <b data-path-to-node=\"1\" data-index-in-node=\"45\">MariaDB (\u8cc7\u6599\u5eab)<\/b> \u4f86\u652f\u6490 Roundcube\u3002<\/p>\n<hr data-path-to-node=\"2\" \/>\n<h3 data-path-to-node=\"3\">\u7b2c\u4e00\u6b65\uff1a\u5b89\u88dd\u74b0\u5883 (LAMP Stack)<\/h3>\n<div class=\"code-block ng-tns-c1777686984-617 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ5wM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-617\">\n<div class=\"animated-opacity ng-tns-c1777686984-617\">\n<pre class=\"ng-tns-c1777686984-617\"><code class=\"code-container formatted ng-tns-c1777686984-617\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-comment\"># \u5b89\u88dd Apache, MariaDB \u548c PHP \u76f8\u95dc\u5957\u4ef6<\/span>\r\nsudo dnf install httpd mariadb-server php php-common php-json php-xml php-mbstring php-mysqlnd php-gd php-intl php-pear php-zip -y\r\n\r\n<span class=\"hljs-comment\"># \u555f\u52d5\u670d\u52d9<\/span>\r\nsudo systemctl <span class=\"hljs-built_in\">enable<\/span> --now httpd mariadb\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"5\" \/>\n<h3 data-path-to-node=\"6\">\u7b2c\u4e8c\u6b65\uff1a\u5efa\u7acb\u8cc7\u6599\u5eab<\/h3>\n<p data-path-to-node=\"7\">Roundcube \u9700\u8981\u4e00\u500b\u8cc7\u6599\u5eab\u4f86\u5132\u5b58\u806f\u7d61\u4eba\u3001\u8a2d\u5b9a\u8207\u4fe1\u4ef6\u7d22\u5f15\u3002<\/p>\n<div class=\"code-block ng-tns-c1777686984-618 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ6AM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-618\">\n<div class=\"animated-opacity ng-tns-c1777686984-618\">\n<pre class=\"ng-tns-c1777686984-618\"><code class=\"code-container formatted ng-tns-c1777686984-618\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-comment\"># \u9032\u5165\u8cc7\u6599\u5eab (\u521d\u6b21\u5b89\u88dd\u76f4\u63a5 enter \u5373\u53ef)<\/span>\r\nsudo mysql -u root\r\n\r\n<span class=\"hljs-comment\"># \u5728 MySQL \u5167\u57f7\u884c\u4ee5\u4e0b\u6307\u4ee4\uff1a<\/span>\r\nCREATE DATABASE roundcubemail;\r\nCREATE USER <span class=\"hljs-string\">'roundcube'<\/span>@<span class=\"hljs-string\">'localhost'<\/span> IDENTIFIED BY <span class=\"hljs-string\">'\u4f60\u7684\u5f37\u5bc6\u78bc'<\/span>;\r\nGRANT ALL PRIVILEGES ON roundcubemail.* TO <span class=\"hljs-string\">'roundcube'<\/span>@<span class=\"hljs-string\">'localhost'<\/span>;\r\nFLUSH PRIVILEGES;\r\nEXIT;\r\n<\/code><\/pre>\n<\/div>\n<hr data-path-to-node=\"9\" \/>\n<h3 data-path-to-node=\"10\">\u7b2c\u4e09\u6b65\uff1a\u4e0b\u8f09\u4e26\u5b89\u88dd Roundcube<\/h3>\n<p data-path-to-node=\"11\">\u76ee\u524d\u6700\u65b0\u7a69\u5b9a\u7248\u901a\u5e38\u662f 1.6.x\u3002<\/p>\n<div class=\"code-block ng-tns-c1777686984-619 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ6QM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-619\">\n<div class=\"animated-opacity ng-tns-c1777686984-619\">\n<pre class=\"ng-tns-c1777686984-619\"><code class=\"code-container formatted ng-tns-c1777686984-619\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-comment\"># \u524d\u5f80\u7db2\u9801\u76ee\u9304<\/span>\r\n<span class=\"hljs-built_in\">cd<\/span> \/var\/www\/html\r\n\r\n<span class=\"hljs-comment\"># \u4e0b\u8f09 (\u8acb\u81f3\u5b98\u7db2\u78ba\u8a8d\u6700\u65b0\u7248\u672c\u9023\u7d50)<\/span>\r\nwget https:\/\/github.com\/roundcube\/roundcubemail\/releases\/download\/1.6.6\/roundcubemail-1.6.6-complete.tar.gz\r\n\r\n<span class=\"hljs-comment\"># \u89e3\u58d3\u7e2e\u4e26\u91cd\u65b0\u547d\u540d<\/span>\r\ntar -zxvf roundcubemail-1.6.6-complete.tar.gz\r\nmv roundcubemail-1.6.6 mail\r\nchown -R apache:apache \/var\/www\/html\/mail\r\n<\/code><\/pre>\n<\/div>\n<hr data-path-to-node=\"13\" \/>\n<h3 data-path-to-node=\"14\">\u7b2c\u56db\u6b65\uff1a\u8a2d\u5b9a Apache \u8207 \u9632\u706b\u7246<\/h3>\n<div class=\"code-block ng-tns-c1777686984-620 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ6gM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-620\">\n<div class=\"animated-opacity ng-tns-c1777686984-620\">\n<pre class=\"ng-tns-c1777686984-620\"><code class=\"code-container formatted ng-tns-c1777686984-620\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-comment\"># \u5141\u8a31\u7db2\u9801\u670d\u52d9\u901a\u904e\u9632\u706b\u7246<\/span>\r\nsudo firewall-cmd --permanent --add-service=http\r\nsudo firewall-cmd --permanent --add-service=https\r\nsudo firewall-cmd --reload\r\n\r\n<span class=\"hljs-comment\"># \u8abf\u6574 SELinux (\u91cd\u8981\uff01\u5426\u5247\u7db2\u9801\u7121\u6cd5\u9023\u7dda\u8cc7\u6599\u5eab\u6216\u5bc4\u4fe1)<\/span>\r\nsudo setsebool -P httpd_can_network_connect 1\r\nsudo setsebool -P httpd_can_network_connect_db 1\r\nsudo setsebool -P httpd_can_sendmail 1\r\n<\/code><\/pre>\n<\/div>\n<hr data-path-to-node=\"16\" \/>\n<h3 data-path-to-node=\"17\">\u7b2c\u4e94\u6b65\uff1a\u7db2\u9801\u5716\u5f62\u5316\u5b89\u88dd (Web Installer)<\/h3>\n<p data-path-to-node=\"18\">\u73fe\u5728\u8acb\u6253\u958b\u700f\u89bd\u5668\uff0c\u8f38\u5165\uff1a<code data-path-to-node=\"18\" data-index-in-node=\"12\">http:\/\/\u4f60\u7684\u4f3a\u670d\u5668IP\/mail\/installer<\/code><\/p>\n<ol start=\"1\" data-path-to-node=\"19\">\n<li>\n<p data-path-to-node=\"19,0,0\"><b data-path-to-node=\"19,0,0\" data-index-in-node=\"0\">Check Environment<\/b>: \u78ba\u8a8d\u6240\u6709 PHP \u6a21\u7d44\u90fd\u662f\u7da0\u8272\u7684\u300cOK\u300d\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"19,1,0\"><b data-path-to-node=\"19,1,0\" data-index-in-node=\"0\">Create Config<\/b>:<\/p>\n<ul data-path-to-node=\"19,1,1\">\n<li>\n<p data-path-to-node=\"19,1,1,0,0\"><b data-path-to-node=\"19,1,1,0,0\" data-index-in-node=\"0\">Database setup<\/b>: \u586b\u5165\u525b\u624d\u5efa\u7acb\u7684 <code data-path-to-node=\"19,1,1,0,0\" data-index-in-node=\"24\">roundcubemail<\/code> \u8cc7\u6599\u5eab\u3001\u5e33\u865f\u8207\u5bc6\u78bc\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"19,1,1,1,0\"><b data-path-to-node=\"19,1,1,1,0\" data-index-in-node=\"0\">IMAP Settings<\/b>: \u586b\u5165 <code data-path-to-node=\"19,1,1,1,0\" data-index-in-node=\"18\">localhost<\/code> (Port 143)\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"19,1,1,2,0\"><b data-path-to-node=\"19,1,1,2,0\" data-index-in-node=\"0\">SMTP Settings<\/b>: \u586b\u5165 <code data-path-to-node=\"19,1,1,2,0\" data-index-in-node=\"18\">localhost<\/code> (Port 587)\u3002<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p data-path-to-node=\"19,2,0\"><b data-path-to-node=\"19,2,0\" data-index-in-node=\"0\">Initialize Database<\/b>: \u9ede\u64ca\u6309\u9215\u5c0e\u5165\u8cc7\u6599\u5eab\u7d50\u69cb\u3002<\/p>\n<\/li>\n<\/ol>\n<hr data-path-to-node=\"20\" \/>\n<h3 data-path-to-node=\"21\">\u7b2c\u516d\u6b65\uff1a\u5b89\u5168\u6027\u6e05\u7406 (\u5fc5\u505a)<\/h3>\n<p data-path-to-node=\"22\">\u5b8c\u6210\u7db2\u9801\u8a2d\u5b9a\u5f8c\uff0c\u70ba\u4e86\u5b89\u5168\uff0c\u8acb\u52d9\u5fc5\u522a\u9664\u5b89\u88dd\u76ee\u9304\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-621 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ6wM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-621\">\n<div class=\"animated-opacity ng-tns-c1777686984-621\">\n<pre class=\"ng-tns-c1777686984-621\"><code class=\"code-container formatted ng-tns-c1777686984-621\" role=\"text\" data-test-id=\"code-content\">sudo rm -rf \/var\/www\/html\/mail\/installer\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"24\" \/>\n<h3 data-path-to-node=\"25\">\u5e38\u898b\u554f\u984c\uff1a\u767b\u5165\u5931\u6557\uff1f<\/h3>\n<p data-path-to-node=\"26\">\u5982\u679c\u7db2\u9801\u986f\u793a\u300cLogin Failed\u300d\uff0c\u8acb\u6aa2\u67e5\uff1a<\/p>\n<ul data-path-to-node=\"27\">\n<li>\n<p data-path-to-node=\"27,0,0\"><b data-path-to-node=\"27,0,0\" data-index-in-node=\"0\">Dovecot<\/b> \u662f\u5426\u6709\u6b63\u5e38\u904b\u884c\uff1f<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"27,1,0\"><b data-path-to-node=\"27,1,0\" data-index-in-node=\"0\">10-auth.conf<\/b> \u88e1\u7684 <code data-path-to-node=\"27,1,0\" data-index-in-node=\"16\">disable_plaintext_auth<\/code> \u662f\u5426\u70ba <code data-path-to-node=\"27,1,0\" data-index-in-node=\"43\">no<\/code>\uff1f (\u56e0\u70ba Roundcube \u662f\u5f9e\u672c\u6a5f\u9023\u7dda\uff0c\u901a\u5e38\u53ef\u4ee5\u5141\u8a31\u660e\u6587)\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"27,2,0\"><b data-path-to-node=\"27,2,0\" data-index-in-node=\"0\">\u65e5\u8a8c<\/b>\uff1a\u89c0\u5bdf <code data-path-to-node=\"27,2,0\" data-index-in-node=\"6\">sudo tail -f \/var\/log\/maillog<\/code> \u770b\u770b Roundcube \u767b\u5165\u6642\u5831\u4ec0\u9ebc\u932f\u3002<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"28\"><b data-path-to-node=\"28\" data-index-in-node=\"0\">\u4f60\u76ee\u524d\u7684\u4f3a\u670d\u5668\u6709\u5b89\u88dd SSL \u6191\u8b49 (HTTPS) \u4e86\u55ce\uff1f\u5982\u679c\u9700\u8981\u8b93\u7db2\u9801\u7248\u66f4\u5b89\u5168\uff0c\u6211\u53ef\u4ee5\u6559\u4f60\u5982\u4f55\u5e6b Apache \u8a2d\u5b9a SSL\u3002<\/b><\/p>\n<\/div>\n<div id=\"04282714e52e1e12\" class=\"conversation-container message-actions-hover-boundary ng-star-inserted\">\n<div class=\"user-query-container\">\n<div id=\"user-query-content-14\" class=\"query-content ng-star-inserted verticle-align-for-single-line-text\" data-hveid=\"0\" data-ved=\"0CAAQ3ucQahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQigM\">\n<div class=\"query-text gds-body-l\" dir=\"ltr\" role=\"heading\" aria-level=\"2\">\n<p class=\"query-text-line ng-star-inserted\"><span style=\"color: #800000;\"><strong>\u70ba\u4f55 \u6211\u770b\u5230\u7684\u756b\u9762 \u662f \u8cc7\u6599\u593e<\/strong><\/span><\/p>\n<p class=\"query-text-line ng-star-inserted\">\u9019\u901a\u5e38\u662f\u56e0\u70ba <b data-path-to-node=\"0\" data-index-in-node=\"7\">Apache (httpd)<\/b> \u9810\u8a2d\u6c92\u6709\u5c07 <code data-path-to-node=\"0\" data-index-in-node=\"28\">index.php<\/code> \u8996\u70ba\u9996\u9801\u6a94\u6848\uff0c\u6216\u662f\u4f60\u4e0b\u8f09\u7684\u8cc7\u6599\u593e\u6b0a\u9650\u8207\u8def\u5f91\u5c64\u7d1a\u4e0d\u5c0d\uff0c\u5c0e\u81f4\u5b83\u76f4\u63a5\u5217\u51fa\u4e86\u76ee\u9304\u5167\u5bb9\uff08Index of \/mail\uff09\u3002<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div>\n<div class=\"response-container ng-tns-c1924156077-408 no-background response-container-with-gpi\" data-hveid=\"1\">\n<div class=\"presented-response-container ng-tns-c1924156077-408\" data-hveid=\"3\">\n<div class=\"response-container-content ng-tns-c1924156077-408\">\n<div class=\"response-content ng-tns-c1924156077-408\">\n<div class=\"container\">\n<div id=\"model-response-message-contentr_04282714e52e1e12\" class=\"markdown markdown-main-panel stronger enable-updated-hr-color preserve-whitespaces-in-response\" dir=\"ltr\" aria-live=\"off\" aria-busy=\"false\">\n<p data-path-to-node=\"1\">\u8acb\u4f9d\u7167\u4ee5\u4e0b\u6b65\u9a5f\u5feb\u901f\u4fee\u6b63\uff1a<\/p>\n<h3 data-path-to-node=\"2\">1. \u4fee\u6b63 Apache \u7684\u9996\u9801\u7d22\u5f15\u8a2d\u5b9a<\/h3>\n<p data-path-to-node=\"3\">Apache \u5fc5\u9808\u77e5\u9053\u770b\u5230\u8cc7\u6599\u593e\u6642\u8981\u81ea\u52d5\u57f7\u884c <code data-path-to-node=\"3\" data-index-in-node=\"23\">index.php<\/code>\u3002 \u8acb\u7de8\u8f2f\u8a2d\u5b9a\u6a94\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-622 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ7AM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-622\">\n<div class=\"animated-opacity ng-tns-c1777686984-622\">\n<pre class=\"ng-tns-c1777686984-622\"><code class=\"code-container formatted ng-tns-c1777686984-622\" role=\"text\" data-test-id=\"code-content\">vi \/etc\/httpd\/conf\/httpd.conf\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"5\">\u627e\u5230 <code data-path-to-node=\"5\" data-index-in-node=\"3\">&lt;IfModule dir_module&gt;<\/code> \u5340\u6bb5\uff0c\u4fee\u6539\u6210\u5982\u4e0b\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-623 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ7QM\">\n<div class=\"code-block-decoration header-formatted gds-title-s ng-tns-c1777686984-623 ng-star-inserted\">\n<p><span class=\"ng-tns-c1777686984-623\">Apache<\/span><\/p>\n<\/div>\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-623\">\n<div class=\"animated-opacity ng-tns-c1777686984-623\">\n<pre class=\"ng-tns-c1777686984-623\"><code class=\"code-container formatted ng-tns-c1777686984-623\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-section\">&lt;IfModule dir_module&gt;<\/span>\r\n    <span class=\"hljs-attribute\">DirectoryIndex<\/span> index.php index.html\r\n<span class=\"hljs-section\">&lt;\/IfModule&gt;<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"7\"><b data-path-to-node=\"7\" data-index-in-node=\"0\">\u91cd\u555f Apache\uff1a<\/b> <code data-path-to-node=\"7\" data-index-in-node=\"11\">sudo systemctl restart httpd<\/code><\/p>\n<hr data-path-to-node=\"8\" \/>\n<h3 data-path-to-node=\"9\">2. \u6aa2\u67e5 PHP \u662f\u5426\u771f\u7684\u6709\u5728\u904b\u4f5c<\/h3>\n<p data-path-to-node=\"10\">\u5982\u679c\u4f60\u770b\u5230\u4e00\u5806\u6a94\u6848\u5217\u8868\uff0c\u9ede\u64ca <code data-path-to-node=\"10\" data-index-in-node=\"15\">index.php<\/code> \u537b\u8b8a\u6210\u4e0b\u8f09\u6a94\u6848\u6216\u662f\u986f\u793a\u7d14\u6587\u5b57\u539f\u59cb\u78bc\uff0c\u4ee3\u8868 <b data-path-to-node=\"10\" data-index-in-node=\"46\">PHP \u6a21\u7d44\u6c92\u6709\u88ab\u52a0\u8f09<\/b>\u3002 \u8acb\u78ba\u8a8d\u5b89\u88dd\u4e86 <code data-path-to-node=\"10\" data-index-in-node=\"66\">php<\/code> \u76f8\u95dc\u7d44\u4ef6\u4e26\u91cd\u555f\u670d\u52d9\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-624 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ7gM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-624\">\n<div class=\"animated-opacity ng-tns-c1777686984-624\">\n<pre class=\"ng-tns-c1777686984-624\"><code class=\"code-container formatted ng-tns-c1777686984-624\" role=\"text\" data-test-id=\"code-content\">dnf install php -y\r\nsystemctl restart httpd\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"12\" \/>\n<h3 data-path-to-node=\"13\">3. \u6aa2\u67e5\u8def\u5f91\u8207\u5c64\u7d1a<\/h3>\n<p data-path-to-node=\"14\">\u4f60\u63d0\u5230\u770b\u5230\u7684\u662f\u300c\u8cc7\u6599\u593e\u300d\uff0c\u8acb\u78ba\u8a8d\u4f60\u7684 <code data-path-to-node=\"14\" data-index-in-node=\"19\">\/var\/www\/html\/mail<\/code> \u76ee\u9304\u4e0b\u76f4\u63a5\u5c31\u662f Roundcube \u7684\u6a94\u6848\uff08\u4f8b\u5982\u88e1\u9762\u61c9\u8a72\u76f4\u63a5\u770b\u5230 <code data-path-to-node=\"14\" data-index-in-node=\"71\">index.php<\/code>, <code data-path-to-node=\"14\" data-index-in-node=\"82\">bin<\/code>, <code data-path-to-node=\"14\" data-index-in-node=\"87\">config<\/code> \u7b49\uff09\uff0c\u800c\u4e0d\u662f\u53c8\u5305\u4e86\u4e00\u5c64\u8cc7\u6599\u593e\u3002<\/p>\n<p data-path-to-node=\"15\"><b data-path-to-node=\"15\" data-index-in-node=\"0\">\u6b63\u78ba\u7684\u7d50\u69cb\u61c9\u8a72\u662f\uff1a<\/b><\/p>\n<div class=\"code-block ng-tns-c1777686984-625 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ7wM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-625\">\n<div class=\"animated-opacity ng-tns-c1777686984-625\">\n<pre class=\"ng-tns-c1777686984-625\"><code class=\"code-container formatted ng-tns-c1777686984-625\" role=\"text\" data-test-id=\"code-content\">ls -l \/var\/www\/html\/mail\r\n<span class=\"hljs-comment\"># \u61c9\u8a72\u76f4\u63a5\u770b\u5230 index.php, composer.json, config\/, logs\/ \u7b49<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"17\">\u5982\u679c\u88e1\u9762\u9084\u6709\u4e00\u500b <code data-path-to-node=\"17\" data-index-in-node=\"9\">roundcubemail-1.6.6<\/code> \u4e4b\u985e\u7684\u8cc7\u6599\u593e\uff0c\u8acb\u628a\u5b83\u5011\u79fb\u51fa\u4f86\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-626 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ8AM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-626\">\n<div class=\"animated-opacity ng-tns-c1777686984-626\">\n<pre class=\"ng-tns-c1777686984-626\"><code class=\"code-container formatted ng-tns-c1777686984-626\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-built_in\">cd<\/span> \/var\/www\/html\/mail\r\nmv roundcubemail-1.6.6\/* .\r\nmv roundcubemail-1.6.6\/.* .\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"19\" \/>\n<h3 data-path-to-node=\"20\">4. SELinux \u6b0a\u9650\u6a19\u7c64 (Rocky 10 \u95dc\u9375)<\/h3>\n<p data-path-to-node=\"21\">\u5982\u679c Apache \u6c92\u6709\u6b0a\u9650\u8b80\u53d6\u9019\u4e9b\u6a94\u6848\uff0c\u4e5f\u6703\u5c0e\u81f4\u986f\u793a\u7570\u5e38\u3002\u8acb\u91cd\u65b0\u6a19\u8a18\u4e00\u6b21\u7db2\u9801\u76ee\u9304\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-627 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ8QM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-627\">\n<div class=\"animated-opacity ng-tns-c1777686984-627\">\n<pre class=\"ng-tns-c1777686984-627\"><code class=\"code-container formatted ng-tns-c1777686984-627\" role=\"text\" data-test-id=\"code-content\">chown -R apache:apache \/var\/www\/html\/mail\r\nrestorecon -Rv \/var\/www\/html\/mail\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"23\" \/>\n<h3 data-path-to-node=\"24\">\u5feb\u901f\u6e2c\u8a66<\/h3>\n<p data-path-to-node=\"25\">\u8acb\u5617\u8a66\u5728\u700f\u89bd\u5668\u76f4\u63a5\u8f38\u5165\u5b8c\u6574\u7db2\u5740\uff1a <code data-path-to-node=\"25\" data-index-in-node=\"17\">http:\/\/\u4f60\u7684IP\/mail\/index.php<\/code><\/p>\n<p data-path-to-node=\"26\"><b data-path-to-node=\"26\" data-index-in-node=\"0\">\u5982\u679c\u9ede\u958b <code data-path-to-node=\"26\" data-index-in-node=\"5\">index.php<\/code> \u5f8c\u756b\u9762\u8b8a\u767d\u6216\u662f\u986f\u793a\u932f\u8aa4\uff0c\u8acb\u544a\u8a34\u6211\uff0c\u90a3\u901a\u5e38\u662f PHP \u5831\u932f\u6216\u6b0a\u9650\u554f\u984c\u3002\u5982\u679c\u76f4\u63a5\u51fa\u73fe\u767b\u5165\u756b\u9762\uff0c\u90a3\u5c31\u4ee3\u8868\u7b2c\u4e00\u6b65\u7684 <code data-path-to-node=\"26\" data-index-in-node=\"69\">DirectoryIndex<\/code> \u8a2d\u5b9a\u6210\u529f\u4e86\uff01<\/b><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"response-container-footer ng-tns-c1924156077-408 ng-star-inserted\">\n<div class=\"actions-container-v2 ng-tns-c1517845176-409\">\n<div class=\"buttons-container-v2 ng-tns-c1517845176-409 ng-star-inserted\">\n<div class=\"ng-tns-c1517845176-409 ng-star-inserted\">\n<div class=\"menu-button-wrapper ng-tns-c1517845176-409 ng-star-inserted\">\n<div class=\"more-menu-button-container ng-tns-c1517845176-409\">\n<h3 data-path-to-node=\"2\">1. \u5b8c\u6210 Installer \u7db2\u9801\u8a2d\u5b9a<\/h3>\n<p data-path-to-node=\"3\">\u5982\u679c\u4f60\u9084\u5728 <code data-path-to-node=\"3\" data-index-in-node=\"6\">\/installer<\/code> \u9801\u9762\uff1a<\/p>\n<ul data-path-to-node=\"4\">\n<li>\n<p data-path-to-node=\"4,0,0\"><b data-path-to-node=\"4,0,0\" data-index-in-node=\"0\">Database Setup<\/b>: \u78ba\u4fdd\u8cc7\u6599\u5eab\u9023\u7dda\u6e2c\u8a66\u662f\u300cOK\u300d\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,1,0\"><b data-path-to-node=\"4,1,0\" data-index-in-node=\"0\">IMAP\/SMTP<\/b>: \u4f3a\u670d\u5668\u5730\u5740\u586b <code data-path-to-node=\"4,1,0\" data-index-in-node=\"18\">localhost<\/code>\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"4,2,0\"><b data-path-to-node=\"4,2,0\" data-index-in-node=\"0\">Create Config<\/b>: \u9ede\u64ca\u5f8c\u6703\u7522\u751f <code data-path-to-node=\"4,2,0\" data-index-in-node=\"22\">config.inc.php<\/code>\u3002\u5982\u679c\u7a0b\u5f0f\u6c92\u6b0a\u9650\u81ea\u52d5\u5beb\u5165\uff0c\u8acb\u624b\u52d5\u8907\u88fd\u7db2\u9801\u4e0a\u7684\u5167\u5bb9\uff0c\u8cbc\u5230 <code data-path-to-node=\"4,2,0\" data-index-in-node=\"64\">\/var\/www\/html\/mail\/config\/config.inc.php<\/code>\u3002<\/p>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"5\">2. <b data-path-to-node=\"5\" data-index-in-node=\"3\">\u6700\u91cd\u8981\uff1a\u522a\u9664\u5b89\u88dd\u76ee\u9304<\/b><\/h3>\n<p data-path-to-node=\"6\">\u4e00\u65e6\u8a2d\u5b9a\u5b8c\u6210\u4e14\u80fd\u6b63\u5e38\u767b\u5165\uff0c<b data-path-to-node=\"6\" data-index-in-node=\"13\">\u8acb\u52d9\u5fc5\u522a\u9664 installer \u8cc7\u6599\u593e<\/b>\u3002\u5982\u679c\u4e0d\u522a\uff0c\u4efb\u4f55\u4eba\u90fd\u53ef\u4ee5\u900f\u904e\u7db2\u9801\u91cd\u8a2d\u4f60\u7684\u90f5\u4ef6\u8cc7\u6599\u5eab\u3002<\/p>\n<div class=\"code-block ng-tns-c1777686984-628 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ8gM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-628\">\n<div class=\"animated-opacity ng-tns-c1777686984-628\">\n<pre class=\"ng-tns-c1777686984-628\"><code class=\"code-container formatted ng-tns-c1777686984-628\" role=\"text\" data-test-id=\"code-content\">sudo rm -rf \/var\/www\/html\/mail\/installer\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-path-to-node=\"8\">3. \u6e2c\u8a66\u6536\u767c<\/h3>\n<p data-path-to-node=\"9\">\u8acb\u7528\u4f60\u7684 <code data-path-to-node=\"9\" data-index-in-node=\"5\">qq<\/code> \u5e33\u865f\u767b\u5165 Roundcube\uff1a<\/p>\n<ul data-path-to-node=\"10\">\n<li>\n<p data-path-to-node=\"10,0,0\"><b data-path-to-node=\"10,0,0\" data-index-in-node=\"0\">\u5de6\u4e0b\u89d2\u5beb\u4fe1<\/b>\uff1a\u5bc4\u7d66\u4f60\u7684 Gmail \u6216\u5176\u4ed6\u5916\u90e8\u4fe1\u7bb1\uff0c\u78ba\u8a8d\u767c\u4fe1\u6b63\u5e38\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"10,1,0\"><b data-path-to-node=\"10,1,0\" data-index-in-node=\"0\">\u5916\u90e8\u56de\u4fe1<\/b>\uff1a\u5f9e Gmail \u56de\u4fe1\uff0c\u770b Roundcube \u80fd\u4e0d\u80fd\u5373\u6642\u6536\u5230\u3002<\/p>\n<\/li>\n<\/ul>\n<hr data-path-to-node=\"11\" \/>\n<h3 data-path-to-node=\"12\">\u63a5\u4e0b\u4f86\u7684\u9032\u968e\u5efa\u8b70\uff08\u5982\u679c\u4f60\u9084\u6709\u9ad4\u529b\u7684\u8a71\uff09\uff1a<\/h3>\n<ul data-path-to-node=\"13\">\n<li>\n<p data-path-to-node=\"13,0,0\"><b data-path-to-node=\"13,0,0\" data-index-in-node=\"0\">HTTPS (SSL) \u52a0\u5bc6<\/b>\uff1a\u76ee\u524d\u4f60\u662f\u7528 <code data-path-to-node=\"13,0,0\" data-index-in-node=\"21\">http<\/code> \u9023\u7dda\uff0c\u5bc6\u78bc\u5728\u7db2\u8def\u4e0a\u50b3\u8f38\u662f\u660e\u6587\u7684\u3002\u5efa\u8b70\u5b89\u88dd <code data-path-to-node=\"13,0,0\" data-index-in-node=\"47\">mod_ssl<\/code> \u4e26\u7533\u8acb Let&#8217;s Encrypt \u6191\u8b49\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"13,1,0\"><b data-path-to-node=\"13,1,0\" data-index-in-node=\"0\">\u9644\u4ef6\u5927\u5c0f\u9650\u5236<\/b>\uff1a\u9810\u8a2d PHP \u53ea\u5141\u8a31\u4e0a\u50b3 2MB \u7684\u9644\u4ef6\u3002\u5982\u679c\u60f3\u52a0\u5927\uff0c\u8981\u4fee\u6539 <code data-path-to-node=\"13,1,0\" data-index-in-node=\"38\">\/etc\/php.ini<\/code> \u88e1\u7684 <code data-path-to-node=\"13,1,0\" data-index-in-node=\"54\">upload_max_filesize<\/code> \u548c <code data-path-to-node=\"13,1,0\" data-index-in-node=\"76\">post_max_size<\/code>\u3002<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"14\"><b data-path-to-node=\"14\" data-index-in-node=\"0\">\u8981\u6211\u5e6b\u4f60\u78ba\u8a8d\u9644\u4ef6\u5927\u5c0f\u9650\u5236\u7684\u4fee\u6539\u65b9\u6cd5\uff0c\u9084\u662f\u4f60\u60f3\u5148\u4eab\u53d7\u4e00\u4e0b\u9019\u5f97\u4f86\u4e0d\u6613\u7684\u6210\u679c\uff0c\u53bb\u559d\u676f\u5496\u5561\u4f11\u606f\u4e00\u4e0b\uff1f<\/b><\/p>\n<\/div>\n<p data-path-to-node=\"14\">\u6307\u793a \u770b\u5230 \u7da0\u8272\u7684 OK<\/p>\n<p data-path-to-node=\"0\">\u592a\u68d2\u4e86\uff01\u770b\u5230\u4e00\u6574\u6392\u7da0\u8272\u7684 <b data-path-to-node=\"0\" data-index-in-node=\"13\">OK<\/b> \u662f\u8eab\u70ba\u5de5\u7a0b\u5e2b\u6700\u7642\u7652\u7684\u6642\u523b\uff0c\u9019\u4ee3\u8868\u4f60\u7684 Rocky Linux 10 \u74b0\u5883\u5df2\u7d93\u5b8c\u5168\u6e96\u5099\u597d\u9a45\u52d5\u9019\u500b\u7db2\u9801\u90f5\u4ef6\u7cfb\u7d71\u4e86\u3002<\/p>\n<p data-path-to-node=\"1\">\u63a5\u4e0b\u4f86\u8acb\u6309\u7167\u4ee5\u4e0b\u6b65\u9a5f\u5b8c\u6210\u6700\u5f8c\u7684\u300c\u9ede\u706b\u300d\u52d5\u4f5c\uff1a<\/p>\n<h3 data-path-to-node=\"2\">1. \u9ede\u64ca\u300cNext\u300d\u9032\u5165\u8a2d\u5b9a\u9801\u9762<\/h3>\n<p data-path-to-node=\"3\">\u5728\u7da0\u8272 OK \u5217\u8868\u7684\u6700\u4e0b\u65b9\uff0c\u9ede\u64ca <b data-path-to-node=\"3\" data-index-in-node=\"17\">Next<\/b>\u3002<\/p>\n<h3 data-path-to-node=\"4\">2. \u8a2d\u5b9a\u8cc7\u6599\u5eab\u8207\u4f3a\u670d\u5668 (\u95dc\u9375\u6b04\u4f4d)<\/h3>\n<p data-path-to-node=\"5\">\u5728 <b data-path-to-node=\"5\" data-index-in-node=\"2\">Create Config<\/b> \u9801\u9762\uff0c\u8acb\u7279\u5225\u6aa2\u67e5\u4ee5\u4e0b\u5e7e\u9805\uff1a<\/p>\n<ul data-path-to-node=\"6\">\n<li>\n<p data-path-to-node=\"6,0,0\"><b data-path-to-node=\"6,0,0\" data-index-in-node=\"0\">Database setup<\/b>: \u586b\u5165\u4f60\u4e4b\u524d\u5efa\u7acb\u7684\u8cc7\u6599\u5eab\u540d\u7a31\u3001\u5e33\u865f\u3001\u5bc6\u78bc\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,1,0\"><b data-path-to-node=\"6,1,0\" data-index-in-node=\"0\">IMAP Settings<\/b>:<\/p>\n<ul data-path-to-node=\"6,1,1\">\n<li>\n<p data-path-to-node=\"6,1,1,0,0\"><code data-path-to-node=\"6,1,1,0,0\" data-index-in-node=\"0\">default_host<\/code>: \u586b\u5165 <code data-path-to-node=\"6,1,1,0,0\" data-index-in-node=\"17\">127.0.0.1<\/code> (\u4f7f\u7528\u672c\u6a5f\u9023\u7dda\u6700\u5feb)\u3002<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p data-path-to-node=\"6,2,0\"><b data-path-to-node=\"6,2,0\" data-index-in-node=\"0\">SMTP Settings<\/b>:<\/p>\n<ul data-path-to-node=\"6,2,1\">\n<li>\n<p data-path-to-node=\"6,2,1,0,0\"><code data-path-to-node=\"6,2,1,0,0\" data-index-in-node=\"0\">smtp_host<\/code>: \u586b\u5165 <code data-path-to-node=\"6,2,1,0,0\" data-index-in-node=\"14\">127.0.0.1<\/code>\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,2,1,1,0\"><code data-path-to-node=\"6,2,1,1,0\" data-index-in-node=\"0\">smtp_port<\/code>: \u586b\u5165 <code data-path-to-node=\"6,2,1,1,0\" data-index-in-node=\"14\">587<\/code> (\u6216\u662f <code data-path-to-node=\"6,2,1,1,0\" data-index-in-node=\"22\">25<\/code>)\u3002<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"7\">3. \u9ede\u64ca\u300cCreate Config\u300d<\/h3>\n<p data-path-to-node=\"8\">\u8a2d\u5b9a\u586b\u5b8c\u5f8c\uff0c\u9ede\u64ca\u6700\u4e0b\u65b9\u7684 <b data-path-to-node=\"8\" data-index-in-node=\"13\">Create Config<\/b> \u6309\u9215\u3002<\/p>\n<blockquote data-path-to-node=\"9\">\n<p data-path-to-node=\"9,0\"><b data-path-to-node=\"9,0\" data-index-in-node=\"0\">\u5982\u679c\u51fa\u73fe\u8b66\u544a\uff1a<\/b> &gt; \u5982\u679c\u5b83\u8aaa\u7121\u6cd5\u5beb\u5165\u6a94\u6848\uff0c\u8acb\u5c07\u7db2\u9801\u4e0a\u986f\u793a\u7684\u90a3\u6bb5 PHP \u7a0b\u5f0f\u78bc\u8907\u88fd\u8d77\u4f86\uff0c\u624b\u52d5\u5728\u4f3a\u670d\u5668\u4e0a\u5efa\u7acb\u6a94\u6848\uff1a <code data-path-to-node=\"9,0\" data-index-in-node=\"57\">sudo vi \/var\/www\/html\/mail\/config\/config.inc.php<\/code> \u7136\u5f8c\u8cbc\u4e0a\u5167\u5bb9\u4e26\u5b58\u6a94\uff0c\u6700\u5f8c\u78ba\u4fdd\u6b0a\u9650\u6b63\u78ba\uff1a <code data-path-to-node=\"9,0\" data-index-in-node=\"126\">sudo chown apache:apache \/var\/www\/html\/mail\/config\/config.inc.php<\/code><\/p>\n<\/blockquote>\n<hr data-path-to-node=\"10\" \/>\n<h3 data-path-to-node=\"11\">4. \u521d\u59cb\u5316\u8cc7\u6599\u5eab (\u6700\u5f8c\u4e00\u95dc)<\/h3>\n<p data-path-to-node=\"12\">\u9ede\u64ca <b data-path-to-node=\"12\" data-index-in-node=\"3\">Continue<\/b> \u5f8c\uff0c\u4f60\u6703\u770b\u5230\u4e00\u500b <b data-path-to-node=\"12\" data-index-in-node=\"21\">Initialize database<\/b> \u7684\u6309\u9215\u3002\u9ede\u4e0b\u53bb\uff0c\u5b83\u6703\u81ea\u52d5\u5e6b\u4f60\u5728 MariaDB \u88e1\u5efa\u7acb\u597d\u6240\u6709\u9700\u8981\u7684\u8868\u683c\u3002<\/p>\n<h3 data-path-to-node=\"13\">5. \u767b\u5165\u6e2c\u8a66<\/h3>\n<p data-path-to-node=\"14\">\u73fe\u5728\u4f60\u53ef\u4ee5\u76f4\u63a5\u9023\u5230 <code data-path-to-node=\"14\" data-index-in-node=\"10\">http:\/\/\u4f60\u7684IP\/mail\/<\/code> \u9032\u884c\u767b\u5165\u4e86\uff01<\/p>\n<ul data-path-to-node=\"15\">\n<li>\n<p data-path-to-node=\"15,0,0\"><b data-path-to-node=\"15,0,0\" data-index-in-node=\"0\">Username<\/b>: <code data-path-to-node=\"15,0,0\" data-index-in-node=\"10\">qq<\/code> (\u6216\u4f60\u8a2d\u5b9a\u7684\u5176\u4ed6\u5e33\u865f)<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"15,1,0\"><b data-path-to-node=\"15,1,0\" data-index-in-node=\"0\">Password<\/b>: \u4f60\u7684\u7cfb\u7d71\u4f7f\u7528\u8005\u5bc6\u78bc<\/p>\n<\/li>\n<\/ul>\n<hr data-path-to-node=\"16\" \/>\n<h3 data-path-to-node=\"17\">&#x26a0;&#xfe0f; \u5b89\u5168\u5927\u88dc\u5e16\uff08\u5fc5\u505a\uff09<\/h3>\n<p data-path-to-node=\"18\">\u4e00\u65e6\u767b\u5165\u6210\u529f\uff0c\u8acb\u7acb\u523b\u56de\u5230\u7d42\u7aef\u6a5f\uff0c\u628a\u90a3\u500b\u300c\u5a92\u4eba\u5a46\u300d\u522a\u6389\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-629 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ8wM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-629\">\n<div class=\"animated-opacity ng-tns-c1777686984-629\">\n<pre class=\"ng-tns-c1777686984-629\"><code class=\"code-container formatted ng-tns-c1777686984-629\" role=\"text\" data-test-id=\"code-content\">rm -rf \/var\/www\/html\/mail\/installer\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"20\">\u9019\u80fd\u9632\u6b62\u5916\u4eba\u9032\u4f86\u4e82\u6539\u4f60\u7684\u8cc7\u6599\u5eab\u8a2d\u5b9a\u3002<\/p>\n<\/div>\n<p data-path-to-node=\"0\">\u9019\u4ee3\u8868\u96d6\u7136\u525b\u624d\u770b\u5230\u5f88\u591a\u7da0\u8272\uff0c\u4f46\u5176\u4e2d\u6709\u5e7e\u9805<b data-path-to-node=\"0\" data-index-in-node=\"20\">\u95dc\u9375\u6a21\u7d44<\/b>\u6216\u662f <b data-path-to-node=\"0\" data-index-in-node=\"27\">PHP \u8a2d\u5b9a<\/b>\u88ab\u6a19\u793a\u70ba\u7d05\u8272\u6216\u9ec3\u8272\u7684 <b data-path-to-node=\"0\" data-index-in-node=\"44\">NOT OK<\/b>\u3002Roundcube \u975e\u5e38\u56b4\u683c\uff0c\u53ea\u8981\u6709\u5fc5\u8981\u7684\u7d44\u4ef6\u6c92\u904e\uff0c\u5b83\u5c31\u4e0d\u8b93\u4f60\u7e7c\u7e8c\u3002<\/p>\n<p data-path-to-node=\"1\">\u8acb\u770b\u7db2\u9801\u4e0a\u5217\u51fa\u7684\u6e05\u55ae\uff0c\u901a\u5e38\u5728 Rocky Linux 10 \u4e0a\u6700\u5e38\u7f3a\u7684\u662f\u4ee5\u4e0b\u9019\u5e7e\u9805\u3002\u8acb\u5728\u7d42\u7aef\u6a5f\u57f7\u884c\u5c0d\u61c9\u7684\u4fee\u5fa9\u6307\u4ee4\uff1a<\/p>\n<hr data-path-to-node=\"2\" \/>\n<h3 data-path-to-node=\"3\">1. \u88dc\u9f4a\u5e38\u898b\u7f3a\u5931\u6a21\u7d44<\/h3>\n<p data-path-to-node=\"4\">\u5982\u679c\u4f60\u770b\u5230 <b data-path-to-node=\"4\" data-index-in-node=\"6\">LDAP\u3001INTL\u3001GD<\/b> \u6216 <b data-path-to-node=\"4\" data-index-in-node=\"21\">Imagick<\/b> \u986f\u793a NOT OK\uff0c\u8acb\u57f7\u884c\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-630 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ9AM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-630\">\n<div class=\"animated-opacity ng-tns-c1777686984-630\">\n<pre class=\"ng-tns-c1777686984-630\"><code class=\"code-container formatted ng-tns-c1777686984-630\" role=\"text\" data-test-id=\"code-content\">dnf install php-intl php-gd php-ldap php-imagick php-opcache -y\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-path-to-node=\"6\">2. \u4fee\u6b63 <code data-path-to-node=\"6\" data-index-in-node=\"6\">php.ini<\/code> \u8a2d\u5b9a (\u6700\u5e38\u898b\u7684\u539f\u56e0)<\/h3>\n<p data-path-to-node=\"7\">Roundcube \u901a\u5e38\u6703\u62b1\u6028 <code data-path-to-node=\"7\" data-index-in-node=\"16\">date.timezone<\/code> \u6c92\u6709\u8a2d\u5b9a\u3002<\/p>\n<ol start=\"1\" data-path-to-node=\"8\">\n<li>\n<p data-path-to-node=\"8,0,0\"><b data-path-to-node=\"8,0,0\" data-index-in-node=\"0\">\u958b\u555f\u8a2d\u5b9a\u6a94\uff1a<\/b><\/p>\n<div class=\"code-block ng-tns-c1777686984-631 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ9QM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-631\">\n<div class=\"animated-opacity ng-tns-c1777686984-631\">\n<pre class=\"ng-tns-c1777686984-631\"><code class=\"code-container formatted ng-tns-c1777686984-631\" role=\"text\" data-test-id=\"code-content\">sudo vi \/etc\/php.ini\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li>\n<p data-path-to-node=\"8,1,0\"><b data-path-to-node=\"8,1,0\" data-index-in-node=\"0\">\u641c\u5c0b\u4e26\u4fee\u6539\u4ee5\u4e0b\u9805\u76ee\uff1a<\/b><\/p>\n<ul data-path-to-node=\"8,1,1\">\n<li>\n<p data-path-to-node=\"8,1,1,0,0\">\u627e\u5230 <code data-path-to-node=\"8,1,1,0,0\" data-index-in-node=\"3\">;date.timezone =<\/code>\uff0c\u53bb\u6389\u524d\u9762\u7684\u5206\u865f\uff0c\u6539\u70ba\uff1a <code data-path-to-node=\"8,1,1,0,0\" data-index-in-node=\"32\">date.timezone = Asia\/Taipei<\/code> (\u6216\u662f\u4f60\u7684\u6240\u5728\u5730)<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"8,1,1,1,0\">\u627e\u5230 <code data-path-to-node=\"8,1,1,1,0\" data-index-in-node=\"3\">mbstring.func_overload<\/code>\uff0c\u78ba\u4fdd\u5b83\u662f <code data-path-to-node=\"8,1,1,1,0\" data-index-in-node=\"31\">0<\/code>\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"8,1,1,2,0\">\u627e\u5230 <code data-path-to-node=\"8,1,1,2,0\" data-index-in-node=\"3\">upload_max_filesize<\/code>\uff0c\u5efa\u8b70\u6539\u70ba <code data-path-to-node=\"8,1,1,2,0\" data-index-in-node=\"28\">20M<\/code> (\u65b9\u4fbf\u4ee5\u5f8c\u50b3\u9644\u4ef6)\u3002<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr data-path-to-node=\"9\" \/>\n<h3 data-path-to-node=\"10\">3. \u6aa2\u67e5\u8cc7\u6599\u5eab\u64f4\u5145\u529f\u80fd<\/h3>\n<p data-path-to-node=\"11\">\u5982\u679c\u986f\u793a <b data-path-to-node=\"11\" data-index-in-node=\"5\">Database (PDO\/MySQL) NOT OK<\/b>\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-632 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ9gM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-632\">\n<div class=\"animated-opacity ng-tns-c1777686984-632\">\n<pre class=\"ng-tns-c1777686984-632\"><code class=\"code-container formatted ng-tns-c1777686984-632\" role=\"text\" data-test-id=\"code-content\">sudo dnf install php-mysqlnd -y\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"13\" \/>\n<h3 data-path-to-node=\"14\">4. \u95dc\u9375\u52d5\u4f5c\uff1a\u91cd\u555f\u670d\u52d9<\/h3>\n<p data-path-to-node=\"15\"><b data-path-to-node=\"15\" data-index-in-node=\"0\">\u6bcf\u5b89\u88dd\u4e00\u500b\u6a21\u7d44\u6216\u6539\u4e00\u6b21 <code data-path-to-node=\"15\" data-index-in-node=\"12\">php.ini<\/code>\uff0c\u90fd\u5fc5\u9808\u91cd\u555f Apache \u624d\u6703\u751f\u6548\uff1a<\/b><\/p>\n<div class=\"code-block ng-tns-c1777686984-633 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ9wM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-633\">\n<div class=\"animated-opacity ng-tns-c1777686984-633\">\n<pre class=\"ng-tns-c1777686984-633\"><code class=\"code-container formatted ng-tns-c1777686984-633\" role=\"text\" data-test-id=\"code-content\">systemctl restart httpd\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"17\" \/>\n<h3 data-path-to-node=\"18\">\u5982\u4f55\u627e\u51fa\u5230\u5e95\u662f\u54ea\u4e00\u9805\uff1f<\/h3>\n<p data-path-to-node=\"19\">\u8acb\u518d\u6b21\u91cd\u65b0\u6574\u7406\u7db2\u9801\uff0c\u6aa2\u67e5\u6e05\u55ae\u4e2d <b data-path-to-node=\"19\" data-index-in-node=\"16\">&#8220;Checking PHP version&#8221;<\/b> \u5230 <b data-path-to-node=\"19\" data-index-in-node=\"41\">&#8220;Checking available databases&#8221;<\/b> \u4e4b\u9593\uff0c\u5230\u5e95\u54ea\u4e00\u884c\u662f\u7d05\u8272\u7684\uff1f<\/p>\n<p data-path-to-node=\"20\">\u901a\u5e38\u6703\u9577\u9019\u6a23\uff1a<\/p>\n<ul data-path-to-node=\"21\">\n<li>\n<p data-path-to-node=\"21,0,0\"><code data-path-to-node=\"21,0,0\" data-index-in-node=\"0\">PDO:  NOT OK(Not installed)<\/code> -&gt; \u7f3a <code data-path-to-node=\"21,0,0\" data-index-in-node=\"33\">php-mysqlnd<\/code><\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"21,1,0\"><code data-path-to-node=\"21,1,0\" data-index-in-node=\"0\">mbstring:  NOT OK(Not installed)<\/code> -&gt; \u7f3a <code data-path-to-node=\"21,1,0\" data-index-in-node=\"38\">php-mbstring<\/code><\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"21,2,0\"><code data-path-to-node=\"21,2,0\" data-index-in-node=\"0\">date.timezone:  NOT OK(Empty value)<\/code> -&gt; \u6c92\u8a2d <code data-path-to-node=\"21,2,0\" data-index-in-node=\"42\">php.ini<\/code> \u88e1\u7684\u6642\u5340<\/p>\n<\/li>\n<\/ul>\n<p data-path-to-node=\"0\">\u9019\u4ee3\u8868\u4f60\u5df2\u7d93\u6210\u529f\u95d6\u904e\u4e86\u74b0\u5883\u6aa2\u6e2c\uff08\u90a3\u4e00\u5806\u7da0\u8272 OK\uff09\uff0c\u73fe\u5728\u9032\u5165\u4e86 Roundcube \u7684<b data-path-to-node=\"0\" data-index-in-node=\"43\">\u6700\u5f8c\u8a2d\u5b9a\u6b65\u9a5f<\/b>\u3002\u7db2\u9801\u73fe\u5728\u63d0\u4f9b\u4e86\u4e00\u6bb5 PHP \u539f\u59cb\u78bc\uff0c\u8981\u4f60\u624b\u52d5\u5efa\u7acb\u8a2d\u5b9a\u6a94\u3002<\/p>\n<p data-path-to-node=\"1\">\u5225\u64d4\u5fc3\uff0c\u9019\u53ea\u9700\u8981\u7c21\u55ae\u7684\u300c\u8907\u88fd\u3001\u8cbc\u4e0a\u300d\u5c31\u80fd\u5b8c\u6210\u3002\u8acb\u6309\u7167\u4ee5\u4e0b\u6307\u4ee4\u64cd\u4f5c\uff1a<\/p>\n<h3 data-path-to-node=\"2\">1. \u5728\u4f3a\u670d\u5668\u4e0a\u5efa\u7acb\u6a94\u6848<\/h3>\n<p data-path-to-node=\"3\">\u8acb\u5728\u7d42\u7aef\u6a5f\u8f38\u5165\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-634 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ-QM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-634\">\n<div class=\"animated-opacity ng-tns-c1777686984-634\">\n<pre class=\"ng-tns-c1777686984-634\"><code class=\"code-container formatted ng-tns-c1777686984-634\" role=\"text\" data-test-id=\"code-content\">vi \/var\/www\/html\/mail\/config\/config.inc.php\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-path-to-node=\"5\">2. \u8cbc\u4e0a\u5167\u5bb9<\/h3>\n<p data-path-to-node=\"6\">\u6309\u4e00\u4e0b\u9375\u76e4\u4e0a\u7684 <b data-path-to-node=\"6\" data-index-in-node=\"8\"><code data-path-to-node=\"6\" data-index-in-node=\"8\">i<\/code><\/b> \u9032\u5165\u7de8\u8f2f\u6a21\u5f0f\uff0c\u7136\u5f8c\u5c07\u700f\u89bd\u5668\u756b\u9762\u4e0a\u6846\u6846\u88e1\u7684\u6240\u6709\u7a0b\u5f0f\u78bc\uff08\u5f9e <code data-path-to-node=\"6\" data-index-in-node=\"38\">&lt;?php<\/code> \u958b\u59cb\u5230\u6700\u5f8c\uff09\u8907\u88fd\u4e26\u8cbc\u4e0a\u53bb\u3002<\/p>\n<blockquote data-path-to-node=\"7\">\n<p data-path-to-node=\"7,0\"><b data-path-to-node=\"7,0\" data-index-in-node=\"0\">\u6ce8\u610f\uff1a<\/b> \u78ba\u4fdd\u7b2c\u4e00\u884c <code data-path-to-node=\"7,0\" data-index-in-node=\"10\">&lt;?php<\/code> \u4e4b\u524d<b data-path-to-node=\"7,0\" data-index-in-node=\"18\">\u5b8c\u5168\u6c92\u6709\u7a7a\u683c\u6216\u7a7a\u884c<\/b>\uff0c\u5426\u5247\u7db2\u9801\u6703\u5831\u932f\u3002<\/p>\n<\/blockquote>\n<h3 data-path-to-node=\"8\">3. \u5b58\u6a94\u96e2\u958b<\/h3>\n<p data-path-to-node=\"9\">\u6309\u4e0b <code data-path-to-node=\"9\" data-index-in-node=\"3\">Esc<\/code> \u9375\uff0c\u63a5\u8457\u8f38\u5165 <code data-path-to-node=\"9\" data-index-in-node=\"14\">:wq<\/code> \u4e26\u56de\u8eca\u3002<\/p>\n<h3 data-path-to-node=\"10\">4. \u8a2d\u5b9a\u6b63\u78ba\u7684\u6b0a\u9650\u8207\u6a19\u7c64<\/h3>\n<p data-path-to-node=\"11\">\u70ba\u4e86\u8b93\u7db2\u9801\u80fd\u8b80\u53d6\u9019\u500b\u8a2d\u5b9a\u6a94\uff0c\u8acb\u57f7\u884c\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-635 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ-gM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-635\">\n<div class=\"animated-opacity ng-tns-c1777686984-635\">\n<pre class=\"ng-tns-c1777686984-635\"><code class=\"code-container formatted ng-tns-c1777686984-635\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-comment\"># \u4fee\u6539\u64c1\u6709\u8005\u70ba Apache<\/span>\r\nsudo chown apache:apache \/var\/www\/html\/mail\/config\/config.inc.php\r\n\r\n<span class=\"hljs-comment\"># \u78ba\u4fdd\u6b0a\u9650\u5b89\u5168 (\u53ea\u6709\u64c1\u6709\u8005\u53ef\u8b80\u5beb)<\/span>\r\nsudo chmod 640 \/var\/www\/html\/mail\/config\/config.inc.php\r\n\r\n<span class=\"hljs-comment\"># \u544a\u8a34 SELinux \u9019\u662f\u7db2\u9801\u8a2d\u5b9a\u6a94<\/span>\r\nsudo restorecon -v \/var\/www\/html\/mail\/config\/config.inc.php\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"13\" \/>\n<h3 data-path-to-node=\"14\">5. \u6700\u5f8c\u4e00\u6b65\uff1a\u9ede\u64ca\u7db2\u9801\u4e0a\u7684 &#8220;Continue&#8221;<\/h3>\n<p data-path-to-node=\"15\">\u56de\u5230\u700f\u89bd\u5668\uff0c\u9ede\u64ca\u4e0b\u65b9\u7684 <b data-path-to-node=\"15\" data-index-in-node=\"12\">Continue<\/b>\u3002<\/p>\n<ul data-path-to-node=\"16\">\n<li>\n<p data-path-to-node=\"16,0,0\">\u5982\u679c\u770b\u5230 <b data-path-to-node=\"16,0,0\" data-index-in-node=\"5\">Initialize database<\/b> \u6309\u9215\uff0c\u8acb\u9ede\u64ca\u5b83\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"16,1,0\">\u5982\u679c\u4e00\u5207\u6b63\u5e38\uff0c\u5b83\u6703\u986f\u793a <code data-path-to-node=\"16,1,0\" data-index-in-node=\"12\">Check config file:  OK<\/code>\u3002<\/p>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"17\">6. \u767b\u5165\u756b\u9762<\/h3>\n<p data-path-to-node=\"18\">\u73fe\u5728\uff0c\u4f60\u53ef\u4ee5\u76f4\u63a5\u9023\u5230 <code data-path-to-node=\"18\" data-index-in-node=\"11\">http:\/\/\u4f60\u7684IP\/mail\/<\/code>\u3002\u606d\u559c\uff01\u4f60\u7d42\u65bc\u53ef\u4ee5\u770b\u5230\u90a3\u500b\u4e7e\u6de8\u3001\u5c08\u696d\u7684\u767b\u5165\u8996\u7a97\u4e86\u3002<\/p>\n<p data-path-to-node=\"18\"><strong><span style=\"color: #800000;\">\u4f9d\u64da \u4f60\u7684\u5efa\u8b70 \u6211\u76ee\u524d \u9084\u662f \u5361\u5728 \u7b2c\u4e09\u95dc \u4e0d\u77e5\u9053\u539f\u56e0 \u7db2\u9801\u51fa\u4e0d\u4f86<\/span><\/strong><\/p>\n<\/div>\n<p data-path-to-node=\"0\">\u8f9b\u82e6\u4e86\uff01\u5361\u5728\u300c\u7db2\u9801\u51fa\u4e0d\u4f86\u300d\u901a\u5e38\u662f\u56e0\u70ba <b data-path-to-node=\"0\" data-index-in-node=\"19\">Apache (httpd)<\/b>\u3001<b data-path-to-node=\"0\" data-index-in-node=\"34\">PHP<\/b> \u6216 <b data-path-to-node=\"0\" data-index-in-node=\"40\">SELinux<\/b> \u9019\u4e09\u8005\u4e4b\u9593\u5728\u5435\u67b6\u3002<\/p>\n<p data-path-to-node=\"1\">\u65e2\u7136\u4f60\u5df2\u7d93\u5b8c\u6210\u4e86\u8a2d\u5b9a\u6a94 <code data-path-to-node=\"1\" data-index-in-node=\"12\">config.inc.php<\/code>\uff0c\u6211\u5011\u4f86\u9032\u884c\u4e00\u6b21\u300c\u5730\u6bef\u5f0f\u641c\u7d22\u300d\uff0c\u6309\u7167\u9019\u500b\u9806\u5e8f\u6aa2\u67e5\uff0c\u4e00\u5b9a\u80fd\u6293\u5230\u5147\u624b\uff1a<\/p>\n<h3 data-path-to-node=\"2\">1. \u6aa2\u67e5 Apache \u662f\u5426\u771f\u7684\u6709\u5728\u52d5\uff1f<\/h3>\n<p data-path-to-node=\"3\">\u6709\u6642\u5019\u8a2d\u5b9a\u6a94\u5beb\u932f\uff0cApache \u6703\u5047\u88dd\u555f\u52d5\u4f46\u5176\u5be6\u6c92\u5728\u5de5\u4f5c\u3002<\/p>\n<div class=\"code-block ng-tns-c1777686984-638 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ_QM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-638\">\n<div class=\"animated-opacity ng-tns-c1777686984-638\">\n<pre class=\"ng-tns-c1777686984-638\"><code class=\"code-container formatted ng-tns-c1777686984-638\" role=\"text\" data-test-id=\"code-content\">sudo systemctl status httpd\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<ul data-path-to-node=\"5\">\n<li>\n<p data-path-to-node=\"5,0,0\"><b data-path-to-node=\"5,0,0\" data-index-in-node=\"0\">\u5982\u679c\u662f\u7d05\u8272 (failed)<\/b>\uff1a\u4ee3\u8868 <code data-path-to-node=\"5,0,0\" data-index-in-node=\"18\">httpd.conf<\/code> \u5beb\u932f\u4e86\uff0c\u8acb\u57f7\u884c <code data-path-to-node=\"5,0,0\" data-index-in-node=\"37\">sudo apachectl configtest<\/code> \u770b\u54ea\u4e00\u884c\u51fa\u932f\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"5,1,0\"><b data-path-to-node=\"5,1,0\" data-index-in-node=\"0\">\u5982\u679c\u662f\u7da0\u8272 (active)<\/b>\uff1a\u7e7c\u7e8c\u4e0b\u4e00\u6b65\u3002<\/p>\n<\/li>\n<\/ul>\n<hr data-path-to-node=\"6\" \/>\n<h3 data-path-to-node=\"7\">2. \u6aa2\u67e5 PHP \u6a21\u7d44\u662f\u5426\u300c\u639b\u8f09\u300d\u6210\u529f<\/h3>\n<p data-path-to-node=\"8\">\u5982\u679c Apache \u6c92\u8f09\u5165 PHP\uff0c\u5b83\u770b\u5230 <code data-path-to-node=\"8\" data-index-in-node=\"22\">.php<\/code> \u6a94\u6848\u6703\u4e0d\u77e5\u9053\u8a72\u600e\u9ebc\u8fa6\uff08\u53ef\u80fd\u6703\u986f\u793a\u7a7a\u767d\u6216\u76f4\u63a5\u4e0b\u8f09\u6a94\u6848\uff09\u3002<\/p>\n<div class=\"code-block ng-tns-c1777686984-639 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ_gM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-639\">\n<div class=\"animated-opacity ng-tns-c1777686984-639\">\n<pre class=\"ng-tns-c1777686984-639\"><code class=\"code-container formatted ng-tns-c1777686984-639\" role=\"text\" data-test-id=\"code-content\">sudo dnf install php -y\r\nsudo systemctl restart httpd\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"10\">\u7136\u5f8c\u5efa\u7acb\u4e00\u500b\u6e2c\u8a66\u6a94\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-640 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ_wM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-640\">\n<div class=\"animated-opacity ng-tns-c1777686984-640\">\n<pre class=\"ng-tns-c1777686984-640\"><code class=\"code-container formatted ng-tns-c1777686984-640\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-built_in\">echo<\/span> <span class=\"hljs-string\">\"&lt;?php phpinfo(); ?&gt;\"<\/span> | sudo tee \/var\/www\/html\/test.php\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"12\">\u8a66\u8457\u9023\u7dda\uff1a<code data-path-to-node=\"12\" data-index-in-node=\"5\">http:\/\/\u4f60\u7684IP\/test.php<\/code><\/p>\n<ul data-path-to-node=\"13\">\n<li>\n<p data-path-to-node=\"13,0,0\"><b data-path-to-node=\"13,0,0\" data-index-in-node=\"0\">\u80fd\u770b\u5230 PHP \u8cc7\u8a0a\u8868<\/b>\uff1aPHP \u6b63\u5e38\u3002<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"13,1,0\"><b data-path-to-node=\"13,1,0\" data-index-in-node=\"0\">\u770b\u5230\u7a0b\u5f0f\u78bc\u6216\u7a7a\u767d<\/b>\uff1aPHP \u6c92\u88dd\u597d\u3002<\/p>\n<\/li>\n<\/ul>\n<hr data-path-to-node=\"14\" \/>\n<h3 data-path-to-node=\"15\">3. \u6aa2\u67e5 SELinux\uff08\u6700\u53ef\u80fd\u7684\u5147\u624b\uff09<\/h3>\n<p data-path-to-node=\"16\">\u5728 Rocky Linux 10\uff0cSELinux \u9810\u8a2d\u6703\u7981\u6b62 Apache \u8b80\u53d6\u5b83\u4e0d\u8a8d\u8b58\u7684\u8cc7\u6599\u593e\u3002<\/p>\n<p data-path-to-node=\"16\"><b data-path-to-node=\"16\" data-index-in-node=\"50\">\u8acb\u5617\u8a66\u66ab\u6642\u95dc\u9589\u5b83\uff1a<\/b><\/p>\n<div class=\"code-block ng-tns-c1777686984-641 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQgAQ\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-641\">\n<div class=\"animated-opacity ng-tns-c1777686984-641\">\n<pre class=\"ng-tns-c1777686984-641\"><code class=\"code-container formatted ng-tns-c1777686984-641\" role=\"text\" data-test-id=\"code-content\">setenforce 0\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<ul data-path-to-node=\"18\">\n<li>\n<p data-path-to-node=\"18,0,0\"><b data-path-to-node=\"18,0,0\" data-index-in-node=\"0\">\u5982\u679c\u95dc\u6389\u5f8c\u7db2\u9801\u5c31\u51fa\u4f86\u4e86<\/b>\uff1a\u90a3\u5c31\u662f\u6b0a\u9650\u554f\u984c\u3002\u8acb\u57f7\u884c\u4ee5\u4e0b\u6307\u4ee4\u6c38\u4e45\u4fee\u5fa9\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-642 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQgQQ\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-642\">\n<div class=\"animated-opacity ng-tns-c1777686984-642\">\n<pre class=\"ng-tns-c1777686984-642\"><code class=\"code-container formatted ng-tns-c1777686984-642\" role=\"text\" data-test-id=\"code-content\">chown -R apache:apache \/var\/www\/html\/mail\r\nrestorecon -Rv \/var\/www\/html\/mail\r\nsetsebool -P httpd_can_network_connect 1\r\nsetenforce 1\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<hr data-path-to-node=\"19\" \/>\n<h3 data-path-to-node=\"20\">4. \u6aa2\u67e5\u8def\u5f91\u8207\u9996\u9801\u6a94\u540d<\/h3>\n<p data-path-to-node=\"21\">\u5982\u679c\u4f60\u8f38\u5165 <code data-path-to-node=\"21\" data-index-in-node=\"6\">http:\/\/\u4f60\u7684IP\/mail<\/code> \u770b\u5230\u7684\u662f <code data-path-to-node=\"21\" data-index-in-node=\"28\">403 Forbidden<\/code> \u6216 <code data-path-to-node=\"21\" data-index-in-node=\"44\">404 Not Found<\/code>\uff1a<\/p>\n<ul data-path-to-node=\"22\">\n<li>\n<p data-path-to-node=\"22,0,0\"><b data-path-to-node=\"22,0,0\" data-index-in-node=\"0\">\u78ba\u8a8d\u8cc7\u6599\u593e\u5b58\u5728<\/b>\uff1a<code data-path-to-node=\"22,0,0\" data-index-in-node=\"8\">ls -ld \/var\/www\/html\/mail<\/code><\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"22,1,0\"><b data-path-to-node=\"22,1,0\" data-index-in-node=\"0\">\u624b\u52d5\u6307\u5b9a\u6a94\u6848<\/b>\uff1a\u8a66\u8a66\u770b <code data-path-to-node=\"22,1,0\" data-index-in-node=\"11\">http:\/\/\u4f60\u7684IP\/mail\/index.php<\/code> (\u52a0\u4e0a\u6a94\u540d)\u3002<\/p>\n<\/li>\n<\/ul>\n<hr data-path-to-node=\"23\" \/>\n<h3 data-path-to-node=\"24\">5. \u6aa2\u67e5\u65e5\u8a8c\uff08\u7d42\u6975\u5927\u7d55\u62db\uff09<\/h3>\n<p data-path-to-node=\"25\">\u5982\u679c\u7db2\u9801\u5674\u51fa <b data-path-to-node=\"25\" data-index-in-node=\"7\">&#8220;Internal Server Error&#8221; (500)<\/b>\uff0c\u7b54\u6848\u5c31\u5728\u65e5\u8a8c\u88e1\uff1a<\/p>\n<div class=\"code-block ng-tns-c1777686984-643 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQggQ\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-643\">\n<div class=\"animated-opacity ng-tns-c1777686984-643\">\n<pre class=\"ng-tns-c1777686984-643\"><code class=\"code-container formatted ng-tns-c1777686984-643\" role=\"text\" data-test-id=\"code-content\">tail -n 20 \/var\/<span class=\"hljs-built_in\">log<\/span>\/httpd\/error_log\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"code-block ng-tns-c1777686984-644 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQgwQ\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-644\">\n<div class=\"animated-opacity ng-tns-c1777686984-644\">\n<pre class=\"ng-tns-c1777686984-644\"><code class=\"code-container formatted ng-tns-c1777686984-644\" role=\"text\" data-test-id=\"code-content\">tail -n 20 \/var\/<span class=\"hljs-built_in\">log<\/span>\/httpd\/access_log\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr data-path-to-node=\"29\" \/>\n<h3 data-path-to-node=\"30\">\u5feb\u901f\u6aa2\u67e5\u6e05\u55ae<\/h3>\n<table data-path-to-node=\"31\">\n<thead>\n<tr>\n<td><strong>\u72c0\u6cc1<\/strong><\/td>\n<td><strong>\u53ef\u80fd\u539f\u56e0<\/strong><\/td>\n<td><strong>\u89e3\u6c7a\u52d5\u4f5c<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span data-path-to-node=\"31,1,0,0\"><b data-path-to-node=\"31,1,0,0\" data-index-in-node=\"0\">\u7db2\u9801\u8f49\u5708\u5708\/\u9023\u4e0d\u4e0a<\/b><\/span><\/td>\n<td><span data-path-to-node=\"31,1,1,0\">\u9632\u706b\u7246\u6c92\u958b 80 \u57e0<\/span><\/td>\n<td><span data-path-to-node=\"31,1,2,0\"><code data-path-to-node=\"31,1,2,0\" data-index-in-node=\"0\">sudo firewall-cmd --add-service=http --permanent &amp;&amp; sudo firewall-cmd --reload<\/code><\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-path-to-node=\"31,2,0,0\"><b data-path-to-node=\"31,2,0,0\" data-index-in-node=\"0\">\u770b\u5230 403 Forbidden<\/b><\/span><\/td>\n<td><span data-path-to-node=\"31,2,1,0\">\u8cc7\u6599\u593e\u6b0a\u9650\u6216 SELinux<\/span><\/td>\n<td><span data-path-to-node=\"31,2,2,0\"><code data-path-to-node=\"31,2,2,0\" data-index-in-node=\"0\">sudo chmod -R 755 \/var\/www\/html\/mail<\/code><\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-path-to-node=\"31,3,0,0\"><b data-path-to-node=\"31,3,0,0\" data-index-in-node=\"0\">\u7db2\u9801\u5168\u767d<\/b><\/span><\/td>\n<td><span data-path-to-node=\"31,3,1,0\">PHP \u5831\u932f\u88ab\u96b1\u85cf<\/span><\/td>\n<td><span data-path-to-node=\"31,3,2,0\">\u6aa2\u67e5 <code data-path-to-node=\"31,3,2,0\" data-index-in-node=\"3\">\/var\/log\/htt<\/code><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"ng-tns-c1517845176-409 ng-star-inserted\">\n<hr data-path-to-node=\"19\" \/>\n<p data-path-to-node=\"20\"><b data-path-to-node=\"20\" data-index-in-node=\"0\">\u7761\u98fd\u4e4b\u5f8c\u679c\u7136\u624b\u611f\u6bd4\u8f03\u9806\uff01\u767b\u5165\u6210\u529f\u5f8c\uff0c\u5225\u5fd8\u4e86\u6211\u6628\u665a\u63d0\u5230\u7684\uff1a<\/b><\/p>\n<div class=\"code-block ng-tns-c1777686984-636 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwikq9-x5eaSAxUAAAAAHQAAAAAQ-wM\">\n<div class=\"formatted-code-block-internal-container ng-tns-c1777686984-636\">\n<div class=\"animated-opacity ng-tns-c1777686984-636\">\n<pre class=\"ng-tns-c1777686984-636\"><code class=\"code-container formatted ng-tns-c1777686984-636\" role=\"text\" data-test-id=\"code-content\">rm -rf \/var\/www\/html\/mail\/installer<\/code><\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u5728 Rocky Linux 10 \u4e0a\uff0c\u6211\u5011\u9700\u8981 PHP\u3001Apache (httpd) \u548c MariaDB (\u8cc7 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=\/wp\/v2\/posts\/1791"}],"collection":[{"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1791"}],"version-history":[{"count":8,"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=\/wp\/v2\/posts\/1791\/revisions"}],"predecessor-version":[{"id":1799,"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=\/wp\/v2\/posts\/1791\/revisions\/1799"}],"wp:attachment":[{"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1791"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.dxQerp.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}