分类:
2009-06-08 08:40:52
互联网上的许多文章和博客都介绍了如何在 SAMP 服务器(Solaris、Apache 2、 MySQL 和 PHP)上使用 Solaris 10 操作系统。但是,其中许多文章针对的都是早期版本的软件包,或者没有包括比较流行的 PHP 语言。还有一些文章并未提供详细的过程和示例,因此读者往往一知半解。
开始之前,应该明确 Solaris 10 操作系统或 Solaris Express 的安装实际上包括 Apache 2.0.x 和 MySQL 4。Solaris 10 操作系统的随带光盘还包括 PHP 4。但目前 Solaris 操作系统没有捆绑 PHP 5 或 MySQL 5。
本文向技术用户介绍了如何自己构建最新的 PHP5 副本,以及如何将它与 Blastwave 提供的 MySQL5 和 Solaris 操作系统随带的 Apache2 版本集成在一起。但如果不希望编译任何软件,并且更愿意使用经过 Sun 优化的高性能内部版本,请在 和/或 中查看 Sun 的“可随时运行”的 Cool Stack 软件包。
可以在 的社区提交中找到有关使用上述软件包配置 SAMP 服务器的早期文章。但是,该文章缺少重要的细节,而且使用的是较旧的 Apache 1.3。(也在 BigAdmin 门户中进行了引用)写得非常好,并且提供了很多详细信息,几乎能满足读者的所有要求。惟一不足的是,Lester 的文章使用的是与 Solaris 10 操作系统捆绑的 MySQL 4 版本,而不是我们希望看到的最新 MySQL 版本 5.x。
许多用户希望重新构建软件的原因是为了获取软件包的最近版本,其中可能包括性能增强、错误和安全性修复,以及可为各种 PHP web 应用程序提供所需功能的编译时选项。
对本练习而言,安装过程将使用下列软件:
pkg-get
进行安装)
我们将在 32 位模式下主要使用 GUN 工具链进行构建。
下面的过程会将这三个应用程序集成在一起,以便您准备好使用 Solaris 10 操作系统、Apache、PHP 5 和 MySQL 5 web 应用程序。
步骤如下:
1. 安装 Solaris 10 操作系统、Solaris Express/Nevada 或 OpenSolaris。
2. 确保您的系统处于联网状态,以便它可以连接到 Internet 和使用静态 IP 地址。如果您需要有关网络配置方面的帮助信息,请查看此文档:。
3.我们希望从 Blastwave.org 安装 MySQL 5。打开 web 浏览器,转至 ,然后执行步骤 1 至 7。此过程非常简单,现在您可以使用 pkg-get
命令通过网络安装软件包(如 MySQL 5)了。
4. 我们现在可以安装 MySQL 5 软件包。在控制台或 xterm 窗口中,以 root
用户身份登录并发出以下命令:
# /opt/csw/bin/pkg-get -i mysql5 mysql5client mysql5devel mysql5rt
# /opt/csw/bin/pkg-get -i mysql5test
注意:安装 mysql5devel
软件包十分重要,否则在稍后生成 PHP 5 时会遇到麻烦。
5.现在,让我们来设置 MySQL 5。
Blastwave.org 中提供了一个指南:请转至 并单击标有“查看有关软件包的新闻或信息”的灰色按钮。我们在这里再次提出这些指导原则,并展开讨论。(感谢 Blastwave 慷慨地与我们分享他们的工作成果。)
A.创建配置文件 /opt/csw/mysql5/my.cnf
,如下所示:将 /opt/csw/mysql5/share/mysql/
中的 my-*.cnf
文件之一复制到 /opt/csw/mysql5/my.cnf
,并根据您的环境进行相应的更改,例如启用 InnoDB
。注意,不建议将 /opt/csw/mysql5/var
用作 my.cnf
的位置。如果您不能确定要复制哪个文件,请使用 my-small.cnf
。
B.在下一个步骤中初始化数据库之前,设置 MySQL 用户和组十分重要。此操作由 Blastwave 软件包安装脚本完成。但是,如果您要从源生成 MySQL,则需要按如下方式创建 MySQL 用户和组:
# groupadd mysql
# useradd -c "MySQL Server" -d /dev/null -g mysql -s /bin/false mysql
C.初始化 MySQL 数据库并确定权限:
cd /opt/csw/mysql5
./bin/mysql_install_db
chown -R mysql:mysql ./var
警告:如果您跳过了上面的 chown
步骤,则 MySQL 将不会启动。
D.启动 MySQL 5。如果只是尝试启动服务器并查看上述步骤是否正确执行,可以发出如下命令:
# cd /opt/csw/mysql5 ; /opt/csw/mysql5/bin/mysqld_safe &
然后,可以使用 ps
命令查看它是否启动,并使用 kill
命令和 PID
将其停止。
警告:请务必在继续之前中止上述过程,否则当您在下面的步骤中启用 SMF 服务器时,MySQL 将无法正确启动。
应当运行以下命令:
# pkill mysql
现在,要确保它在重新引导后启动,请继续阅读下文。
注意:Solaris Express、Nevada 和 Solaris 10 更新的最新内部版本使用 SMF 启动守护进程(例如 mysql
)。下面的过程可能会有所不同。如果您的 Solaris 版本使用 SMF,则您要使用下面所示的 svcadm
命令来启动/停止 MySQL 5。
旧的 RC 文件方法:
# /etc/init.d/cswmysql5 start
新的 SMF
方法:
如果在使用 SMF(而不是 RC 文件)的 Solaris 版本上安装 MySQL 5 软件包,您会发现软件包安装了 MySQL 5 的 SMF 清单,而且您可以使用下列命令来查看服务状态:
# svcs -a | grep mysql
disabled 13:36:01 svc:/network/cswmysql5:default
为了确保 MySQL 5 服务器启动(并且在重新引导时也能启动),请发出下列命令:
# svcadm enable svc:/network/cswmysql5:default
您可以使用下列命令再次进行验证:
# svcs -a | grep mysql
online 15:12:43 svc:/network/cswmysql5:default
您可以使用命令 # svcadm disable svc:/network/cswmysql5:default
停止服务器,即使经过重新引导,该服务器仍保持停止状态,直到您发出 svcadm enable
命令为止。
E.请切记为 MySQL root
用户设置密码!
此密码不应当与您的 Solaris 超级用户密码相同!要执行此操作,请启动服务器,然后发出下列命令:
设置本地密码:
# /opt/csw/mysql5/bin/mysqladmin -u root password 'new-password'
# /opt/csw/mysql5/bin/mysqladmin -u root -h\
password 'new-password'
(如果鉴于下面 第 I 部分的步骤 5 中的安全性讨论而禁用了网络访问,则前面的命令行将会失败并且也不再需要。)
有关详细说明,请参阅 MySQL 5 documentation(MySQL 5 文档)。
F. 可选: 此操作需要一些时间。您可以使用下列命令运行 MySQL 守护进程的测试套件:
# cd /opt/csw/mysql5/mysql-test
# ./mysql-test-run
G.检查安装:
# ./bin/mysql -p
系统将提示您输入 MySQL root
用户的密码。您应该会看到 mysql
提示符。请尝试执行诸如 STATUS
之类的命令,以查看服务器是否响应。然后,尝试从 mysql
提示符运行测试查询:
show databases;
将返回 mysql
和 test
数据库。
quit
注意:可以通过创建和编辑 /opt/csw/mysql5/etc/mysql5rc
或 /etc/opt/csw/mysql5rc
覆盖启动选项。
mysql5rc
的模板位于 /opt/csw/mysql5/share/mysql
中。如果为系统创建了 rc
文件,则必须使用此模板。例如:
# mkdir -p /etc/opt/csw
chown root:bin /etc/opt/csw
和 chmod 0755 /etc/opt/csw
。
# cp /opt/csw/mysql5/share/mysql/mysql5rc /etc/opt/csw/
mysql5rc
文件,则守护进程将使用默认值启动。如果这是您的第一个实验系统,则无需执行此步骤;这是一个可选步骤。 H.参考文档:
I.MySQL 安全性方面的内容不在本文的讨论范围之内。但是,下面提供了一些需要考虑的基本步骤:
localhost
连接),请将 skip-networking
行添加到 /opt/csw/mysql5/my.cnf
配置文件中的 [mysqld]
部分。这样,将会禁用 MySQL 服务器守护进程的所有 TCP/IP 远程连接。
LOAD DATA LOCAL INFILE
命令,此命令可能允许从本地文件(尤其是在发生的新 SQL 注入式攻击时)进行未经授权的读取。向 my.cnf
文件的 [mysqld]
部分添加 set-variable=local-infile=0
。
users
表中的匿名用户帐户。 上述步骤只是一些基本措施,但可以在安装后获得明显改进。请在您常用的 Internet 搜索引擎中输入“Securing MySQL”,以查看 Web 上有关 MySQL 安全性的文章。
6. 到现在为止,我们已经完成了 MySQL 5 的安装和测试。接下来,我们将生成 PHP 5。我们将借用 中的部分内容,在此对其许可表示感谢。由于我们使用不同的选项和路径,因此需要修改一些 PHP 配置。
尤其是我们将在编译前更改 PHP 5 的配置,以使用 /opt/csw/mysql5
中 Blastwave MySQL 5 的路径,而且还要添加一些其他选项。此过程还将验证您是否安装了生成 PHP 5 所需的 GNU 工具。
A.以 root
用户身份登录到全局区域,并确保 /opt/csw/bin
和 /usr/sfw/bin
位于 $PATH
中,如下所示:
global# echo $PATH
/opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin: \
/usr/dt/bin:/usr/ccs/bin
现在让我们讨论一下。首先,您可能不希望修改 root
用户的 .profile
,也不希望垃圾信息将 /
目录弄乱。对于 Solaris 10 操作系统、Solaris Express 或 OpenSolaris,建议您创建目录 /root
,并在 /etc/password
中创建使用 bash
或 ksh
shell 的其他 root
用户帐户,然后指向作为主目录的 /root
。然而,这只是您和 Google 的之间的选择和话题。无论您做出什么样的决定,请确保路径包含上述组成部分。然后继续操作。
B.使用 Blastwave.org 的 pkg-get
命令(已在上面的 步骤 3 中安装)来安装 GNU autoconf
、automake
和 gsed
软件包。下面的软件版本应该比较类似或更新一些。
global# pkg-get -i autoconf
...
global# which autoconf && autoconf --version | head -2
/opt/csw/bin/autoconf
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.
global# pkg-get -i automake
...
global# which automake && automake --version | head -2
/opt/csw/bin/automake
automake (GNU automake) 1.8.3
Written by Tom Tromey.
global# pkg-get -i gsed
...
global# which gsed && gsed --version | head -2
/opt/csw/bin/gsed
GNU sed version 4.1.4
Copyright (C) 2003 Free Software Foundation, Inc.
C.验证安装 PHP 所需的其他开源软件的可用性。(如果需要,您可以查看 PHP 手册中的 部分。) 下面的软件版本应该比较类似或更新一些。
global# which gcc && gcc --version | head -2
/usr/sfw/bin/gcc
gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
Copyright (C) 2004 Free Software Foundation, Inc.
global# which gmake && gmake --version | head -2
/usr/sfw/bin/gmake
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.
global# which flex && flex --version | head -2
/usr/sfw/bin/flex
flex version 2.5.4
global# which bison && bison --version | head -2
/usr/sfw/bin/bison
bison (GNU Bison) 1.875
Written by Robert Corbett and Richard Stallman.
global# which gm4 && gm4 --version | head -2
/opt/csw/bin/gm4
GNU M4 1.4.3
Written by Rene' Seindal.
global# which perl && perl -v | head -2
/opt/csw/bin/perl
This is perl, v5.8.7, built for sun4-solaris-thread-multi
global# which gunzip && gunzip -V | head -2
/usr/bin/gunzip
gunzip 1.3.3-patch.1
(2002-03-08)
global# which gtar && gtar --version | head -2
/usr/sfw/bin/gtar
tar (GNU tar) 1.14
Copyright (C) 2004 Free Software Foundation, Inc.
D. 通过从源生成 libxml2
来测试开源工具。
从 下载最新版本。
此时,我们在此处找到了压缩源的下列版本:
# wget ftp://xmlsoft.org/libxml2/libxml2-2.6.26.tar.gz
选择要在其中执行下列步骤的目录:
global# gunzip -cd libxml2-2.6.26.tar.gz | gtar xvpf -
global# cd libxml2-2.6.26
global# ./configure
...
global# gmake
...
global# gmake install
...
现在,您已生成并安装了 libxml2
软件,并会发现它位于 /usr/local
中。
注意:已经验证 Solaris Nevada build 42 及更高版本具有更新的 libxml2
软件包,因此不需要执行此步骤。如果运行 Solaris Nevada build 42 或更高版本(包括源自 build 42 或更高版本的 OpenSolaris 内部版本),则可以跳过生成 libxml2
(6D 部分),并将下面 6F 部分中的部分 PHP5 配置行从:
--with-libxml-dir=/usr/local
更改为:
--with-libxml-dir=/usr
E.如果文件 /etc/apache2/httpd.conf
不存在,请使用以下命令:
global#cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf
使用您喜欢的文本编辑器编辑 /etc/apache2/httpd.conf
:
ServerName
(默认为 127.0.0.1
)设置为主机名。
ServerAdmin
设置为有效的电子邮件地址。 F.从 下载并编译 PHP 的最新生产版本。再次选择您自己的目录,例如 /src
、/build
或者其他任何目录。至于代码编写,可以在 上找到。我们选择下载用 gzip 压缩的版本,以便可以使用下列命令继续操作:
global# gunzip -cd php-5.1.6.tar.gz | gtar xvpf -
...
global# cd php-5.1.6
这是我们与原始网页的不同之处。原始网页使用的是可在 /usr/sfw
中找到的 MySQL 4,而我们使用的是位于 /opt/csw/mysql5
中的最新 MySQL 5。所以我们选择的配置选项现在为:
global# ./configure --with-apxs2=/usr/apache2/bin/apxs --enable-dbase \
--with-libxml-dir=/usr/local --with-config-file-path=/etc/apache2 \
--with-mysql=shared,/opt/csw/mysql5 \
--with-mysqli=shared,/opt/csw/mysql5/bin/mysql_config \
--with-xpm-dir=/usr --with-gd --with-tiff-dir=/usr --with-bz2=/usr/lib \
--with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib --enable-mbstring \
--enable-calendar--enable-bcmath --enable-ftp --enable-exif
对于简单的服务器设置,上述配置选项足以满足要求。还有许多其他选项,供用户进行选择和存档。通过输入 command# ./configure --help
或查看 PHP 站点 中的核心配置选项,可以查看其中部分选项。
注意:如果您尝试启用 openssl
,则必须重新编译 Apache 和 MySQL,以便具有相同版本的 openssl
库,否则从 PHP 到 MySQL 的连接将会失败。如果要将 cookie 用于会话,则通过将 mcrypt
库添加到系统并使用 PHP 编译选项 --with-mycrpt
,您可能会发现性能得到了提高。
小窍门:如果您对其他用户所使用的 config
选项感兴趣,只需尝试将 phpinfo()
输入常用的 Internet 搜索引擎即可。:-)
现在让我们开始生成过程:
...
global# gmake
...
global# gmake install
...
Installing PHP SAPI module: apache2handler
/var/apache2/build/instdso.sh SH_LIBTOOL='/var/apache2/build/libtool' libphp5.la
/usr/apache2/libexec
/var/apache2/build/libtool --mode=install cp libphp5.la /usr/apache2/libexec/
cp .libs/libphp5.so /usr/apache2/libexec/libphp5.so
chmod +x /usr/apache2/libexec/libphp5.so
cp .libs/libphp5.lai /usr/apache2/libexec/libphp5.la
libtool: install: warning: remember to run 'libtool --finish /build/php-5.1.2/libs'
chmod 755 /usr/apache2/libexec/libphp5.so
[activating module 'php5' in /etc/apache2/httpd.conf]
Installing PHP CLI binary: /usr/local/bin/
Installing PHP CLI man page:/usr/local/man/man1/
Installing build environment: /usr/local/lib/php/build/
Installing header files: /usr/local/include/php/
Installing helper programs: /usr/local/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment:/usr/local/lib/php/
[PEAR] Archive_Tar - installed: 1.3.1
[PEAR] Console_Getopt - installed: 1.2
pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
[PEAR] PEAR - installed: 1.4.6
Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/include/php/ext/pdo/
#
G.从 php-5.1.6
源目录将文件 php.ini-dist
复制到 Apache 的 config
目录:
global# cp php.ini-dist /etc/apache2/php.ini
如果要在多个区域中设置 Apache web 服务器,您可能会具有以下示例路径(或要使用的任何区域):
global# cp php.ini-dist /zones/zone0/root/etc/apache2/php.ini
接下来,我们将编辑配置文件并测试整个堆栈。
H.编辑配置文件。
编辑 /etc/apache2/php.ini
文件以设置 PHP 选项。
对于 PHP 5,将不再自动加载 MySQL 界面模块。
您需要明确加载此模块以及所需的任何其他扩展模块。要执行此操作,请编辑 php.ini
文件并添加以下两行内容:
1. 验证生成 PHP 5 时是否创建了所需的模块:
# ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20050922/
total 1088
-rwxr-xr-x1 root root103144 Aug 29 21:48 mysql.so
-rwxr-xr-x1 root root429948 Aug 29 21:48 mysqli.so
在 php.ini
中查找以下列内容开头的行:
; Directory in which the loadable extensions (modules) reside.
extension_dir =
将该行编辑为下列内容:
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20050922/"
如果已将 PHP 5 安装到了其他位置,请根据需要调整此行。
2. 接下来查找 php.ini
文件的以下块:
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
添加以下行:
extension=mysql.so
现在,将不会发生 Apache/PHP 5 无法连接到 MySQL 的问题。
3. 接下来编辑 /etc/apache2/httpd.conf
文件以加载 PHP 模块。
查找包含 php5_module
的行。LoadModule
语句右侧的路径必须指向系统上 PHP 模块的路径。此路径将是系统上 /usr/apache2
的 相对 路径。(因此,此实际路径为 /usr/apache2/libexec/libphp5.so
。) 上述 PHP 5 的 gmake 安装应该已经为您添加了此路径,但是请务必进行检查。
LoadModule php5_module libexec/libphp5.so
我们希望 Apache 将网页文件名的 .php
扩展名解析为 PHP。请查找 /etc/apache2/httpd.conf
文件的 AddType
部分,并添加以下行:
AddType application/x-httpd-php .php
有些用户喜欢在 httpd.conf
省略以上行,而是将 application/x-httpd-php php phtml
添加到 /etc/apache2/mime.types
文件。每种方法都是可行的。
I.启动 Apache 2 并进行测试。
警告:如果您之前已经通过其他 SAMP 文章、随附 CD 脚本或以手动方法激活了 Apache 1.3,则当您尝试执行下列步骤时将会发生冲突。在继续操作之前禁用 Apache 1.3 十分重要。
确保 Apache 1.3 已被禁用:
#svcs -a | grep apache
legacy_run Sep_11lrc:/etc/rc3_d/S50apache
以上信息表示 Apache 1.3 传统的 rc
启动脚本为 /etc/rc3_d/S50apache
。该脚本将在 /etc/apache/httpd.conf
中查找 Apache 的配置文件是否存在,如果缺少该文件,则不会启动 Apache 1.3。要禁用 Apache 1.3,请确保上述路径中没有文件,或者(虽然这种方法有点极端)将启动脚本从:
/etc/rc3_d/S50apache
重命名为:
/etc/rc3.d/OFF-S50apache
事实上,在启动时仅执行以字母“S”开头的脚本。
启动 Apache 2:
# svcadm enable apache2
# svcs | grep -i apache2
online 18:07:10 svc:/network/http:apache2
如果 Apache 2 已成功启动,则您可以使用 ps
命令,并且应该看到多个类似于下述进程的进程:
# ps -ef | grep http
webservd 18592 38020Sep 11 ? 0:03 /usr/apache2/bin/httpd -k start
webservd 13093 38020Sep 08 ? 0:07 /usr/apache2/bin/httpd -k start
如果发现大约 10 个此类进程,请不要惊慌。此外,在看到下列进程时也不要惊慌:
root 49810 Jul 17 ? 1:28 /usr/apache/bin/httpd \
-f /etc/apache/httpd-standalone-ipp.conf
它只不过是网络端口 631 上 Internet 打印协议 (IPP) 侦听器所使用的较旧的 Apache 1.3。由于它不在端口 80 上运行,因此不会与此处的 web 服务器配置发生冲突。
7.接下来,我们来了解一些在 Apache 2 web 服务器的 DocumentRoot
目录中进行测试非常有用的信息。请使用您所选择的文本编辑器,创建下列文件(网页),并将其命名为 phpinfo.php
:
Hello World
按照 Apache httpd.conf
文件中的定义将该文件放置到 DocumentRoot
目录中。如果您将 web 浏览器指向 并且一切正常,则您应该获取有关 PHP、Apache、和 MySQL 配置的详细信息。
注意:建议您在测试之后删除该文件,或使用 HTTP 验证对其进行保护,因为该文件透露了与站点有关的大量信息,这些信息对攻击者非常有用。
到现在为止,您已经注意到,实际上述的 phpinfo
网页基本上仅测试 Apache 和 PHP 是否一起工作。尽管输出会显示与已启用的 MySQL 客户端有关的信息,但它实际上并不测试与 MySQL 服务器的连接。在绝大多数情况下,您只需安装 PHP/MySQL 应用程序,并期望它可以正常工作。但是,如果您具有超强的分析能力,喜欢仔细研究完整性、准确性,并希望对几乎所有事情进行测试,则可以参见下面提供的简单 PHP 网页,该页将执行下列操作:
mysql
数据库名称,该数据库是在执行完所有 MySQL 安装后存在的数据库。
mysql
数据库中的表名的列表。 大多数代码都来自于 PHP 手册中的函数用法示例。请将下面的 PHP 代码复制到文件(网页)中,并为其指定类似 simple-test.php
的名称。编辑该文件并插入用于连接到 MySQL 服务器的密码。将该文件放置到 web 服务器的 DocumentRoot
中(与之前放置 phpinfo.php
的位置相同)。
以下为 PHP 代码:
$db_username = "root";// EDIT if needed: The username for mysql.
$db_password = "insert-yours-here"; // EDIT ME
// Above is YOUR password used for mysql admin access.
$db_hostname = "localhost";
$db_name = "mysql"; // Install creates this admin database.
if (!mysql_connect($db_hostname, $db_username, $db_password)) {
echo "Can't connect to MySQL Server";
exit;
}else{
echo "Connection to Mysql server succeeded.";
echo "
";
}
// Now query the db and get the list of tables.
$result = mysql_db_query($db_name, "SHOW TABLES");
if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
echo "The selected database is name is mysql
";
echo "Here is the list of tables
";
while ($row = mysql_fetch_row($result)) {
echo "Table: {$row[0]}
";
}
mysql_free_result($result);
?>
如果您已正确复制上述代码,并且软件配置正确,则可以将 Web 浏览器指向 ,您应该可以看到类似以下的内容:
Connection to Mysql server succeeded.
The selected database is name is mysql.
Here is the list of tables
Table: columns_priv
Table: db
Table: func
Table: help_category
Table: help_keyword
Table: help_relation
Table: help_topic
Table: host
Table: proc
Table: procs_priv
Table: tables_priv
Table: time_zone
Table: time_zone_leap_second
Table: time_zone_name
Table: time_zone_transition
Table: time_zone_transition_type
Table: user
8. 让我们来查看一下 PHP 的安全性。
现在所需功能已经能够正常运行,但请注意,PHP 的默认安装和配置文件 php.ini
中的默认选项仅对开发工作是安全的,而对于暴露在网络上的生产服务器并不安全。下面是严重警告:
A. 删除在上面 步骤 7 中创建的 phpinfo
和 simpletest
PHP 网页。(或者立即通过使用某些类型的 HTTP 验证保护这些页面所在的目录来锁定这些网页。)
B.强烈建议您查看与保护 PHP 有关的教程,例如以下教程:
如果您没有时间阅读这些教程,建议您至少查看一下 PHP 源代码目录中的(也是较安全的)配置文件 php.ini-recommended
。您可能希望将此文件与基本的启动配置文件 php.ini-dist
进行比较,以查看已对生产站点的安全性和性能进行了哪些更改。
(# diff php.ini-dist php.ini-recommended | less)
希望本文提供的技巧可帮助您解决一些问题。希望您能在 Solaris 操作系统上顺利使用 SAMP 服务器。