Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3303713
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类:

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 应用程序提供所需功能的编译时选项。

对本练习而言,安装过程将使用下列软件:

  • 随 Solaris 安装一起提供的 Apache
  • 提供的 MySQL 5(使用 pkg-get 进行安装)
  • 提供的最新 PHP 5(下载并编译)

我们将在 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;

将返回 mysqltest 数据库。

quit

注意:可以通过创建和编辑 /opt/csw/mysql5/etc/mysql5rc/etc/opt/csw/mysql5rc 覆盖启动选项。

mysql5rc 的模板位于 /opt/csw/mysql5/share/mysql 中。如果为系统创建了 rc 文件,则必须使用此模板。例如:

  1. # mkdir -p /etc/opt/csw
    我使用以下权限:chown root:bin /etc/opt/cswchmod 0755 /etc/opt/csw
  2. # cp /opt/csw/mysql5/share/mysql/mysql5rc /etc/opt/csw/
    如果没有可用的 mysql5rc 文件,则守护进程将使用默认值启动。如果这是您的第一个实验系统,则无需执行此步骤;这是一个可选步骤。

H.参考文档:

I.MySQL 安全性方面的内容不在本文的讨论范围之内。但是,下面提供了一些需要考虑的基本步骤:

  • 确保 MySQL 超级用户具有一个密码集,且此密码集不同于主机系统的超级用户密码。
  • 确保只有 MySQL 用户具有对数据库目录的读取和写入访问权限。
  • 如果在 web 服务器上将 PHP 用于 MySQL(这样在 PHP/Apache 和 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 中创建使用 bashksh shell 的其他 root 用户帐户,然后指向作为主目录的 /root。然而,这只是您和 Google 的之间的选择和话题。无论您做出什么样的决定,请确保路径包含上述组成部分。然后继续操作。

B.使用 Blastwave.org 的 pkg-get 命令(已在上面的 步骤 3 中安装)来安装 GNU autoconfautomakegsed 软件包。下面的软件版本应该比较类似或更新一些。

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 网页,该页将执行下列操作:

  1. 尝试打开从 PHP 页到 MySQL 的连接。
  2. 选择 mysql 数据库名称,该数据库是在执行完所有 MySQL 安装后存在的数据库。
  3. 显示存在于 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 中创建的 phpinfosimpletest PHP 网页。(或者立即通过使用某些类型的 HTTP 验证保护这些页面所在的目录来锁定这些网页。)

B.强烈建议您查看与保护 PHP 有关的教程,例如以下教程:

如果您没有时间阅读这些教程,建议您至少查看一下 PHP 源代码目录中的(也是较安全的)配置文件 php.ini-recommended。您可能希望将此文件与基本的启动配置文件 php.ini-dist 进行比较,以查看已对生产站点的安全性和性能进行了哪些更改。

(# diff php.ini-dist php.ini-recommended | less)

希望本文提供的技巧可帮助您解决一些问题。希望您能在 Solaris 操作系统上顺利使用 SAMP 服务器。

阅读(1691) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~