Linux下:
在Linux环境下配置安装PHP环境(Apache2),参考了一些别人的配置方法,下面就是安装步骤:
- 安装apache
进入/usr/local/目录下创建apache2、apr、apr-util、pcre四个目录;
[root@dm7-one apache]# cd /usr/local/ [root@dm7-one local]# mkdir apache2 [root@dm7-one local]# mkdir apr [root@dm7-one local]# mkdir apr-util [root@dm7-one local]# mkdir pcre |
将各自的安装包解压至指定的目录下;
[root@dm7-one apache]#tar -zxvf httpd-2.4.3.tar.gz -C /usr/local/apache2/ [root@dm7-one apache]#tar -zxvf apr-1.4.6.tar.gz -C /usr/local/apr [root@dm7-one apache]# tar -zxvf apr-util-1.4.1.tar.gz -C /usr/local/apr-util/ [root@dm7-one pcre]# tar -vxjf pcre-8.20.tar.bz2 -C /usr/local/pcre/ |
进入各个指定目录必须依次安装apr、apr-util、pcre和apache;
PS:在安装apr过程中可能会报错:no acceptable C compiler found in $Path;在安装pcre过程中可能会报错:libtool: compile: unrecognized option `-DHAVE_CONFIG_H';libtool: compile: Try `libtool --help' for more information;原因为缺少C和C++编译环境,直接运行 yum install gcc和yum install gcc-c++,安装c编译器gcc和c++编译器g++即可,同时yum install libtool。
#安装apr [root@dm7-one pcre]# cd /usr/local/apr/apr-1.4.6 [root@dm7-one apr-1.4.6]# ./configure --prefix=/usr/local/apr [root@dm7-one apr-1.4.6]# make [root@dm7-one apr-1.4.6]# make install #安装apr-util [root@dm7-one apr-util-1.4.1]# cd /usr/local/apr-util/apr-util-1.4.1/ [root@dm7-one apr-util-1.4.1]# ./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config [root@dm7-one apr-util-1.4.1]# make [root@dm7-one apr-util-1.4.1]# make install #安装pcre [root@dm7-one apr-util-1.4.1]# cd /usr/local/pcre/pcre-8.20/ [root@dm7-one pcre-8.20]# ./configure --prefix=/usr/local/pcre [root@dm7-one pcre-8.20]# make [root@dm7-one pcre-8.20]# make install #安装apache [root@dm7-one pcre-8.20]# cd /usr/local/apache2/httpd-2.4.3/ [root@dm7-one httpd-2.4.3]# ./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre [root@dm7-one httpd-2.4.3]# make [root@dm7-one httpd-2.4.3]# make install |
完成apache安装
- 修改apache配置文件
[root@dm7-one httpd-2.4.3]# cd /usr/local/apache2/conf [root@dm7-one conf]# vi http.conf 找到: AddType application/x-compress .Z AddType application/x-gzip .gz .tgz 在后面添加: AddType application/x-httpd-php .php(使Apcche支持PHP) AddType application/x-httpd-php-source .php5 找到: <IfModule dir_module> DirectoryIndex index.html </IfModule> 改为: <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> 找到: #ServerName www.example.com:80 修改为: ServerName 127.0.0.1:80或者ServerName localhost:80 记得要去掉前面的“#” #进入apache安装目录bin目录下,启动apache [root@dm7-two conf]# cd /usr/local/apache2/bin/ [root@dm7-two bin]# ./apachectl -k start |
在浏览器里输入服务器ip地址,如:http://192.168.136.2,如果出现It Works!说明成功。
- 安装PHP
进入/usr/local/目录下创建php目录并将安装包解压至该目录下;
[root@dm7-one local]#mkdir php [root@dm7-two opt]# tar -jxvf php5.6.6.tar.bz2 -C /usr/local/php/ |
进入指定目录安装php;
PS:在安装过程中可能会出现错误:configure: error: xml2-config not found. Please check your libxml2 installation. 运行yum install libxml2,然后再运行yum install libxml2-devel完成安装;
[root@dm7-one opt]# cd /usr/local/php/php-5.6.6/ [root@dm7-one php-5.6.6]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs [root@dm7-one php-5.6.6]# make [root@dm7-one php-5.6.6]# make install |
注意这里有一个-with-apxs2=/usr/local/apache/bin/apxs选项,其中apxs是在安装Apache时产生的,apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。我的理解是通过这个工具把PHP模块动态加载到Apache中。
搭建PHP过程中可能遇到如下报错:
Make时可能抛错: Generating phar.phar /usr/local/src/php-5.4.9/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory make: *** [ext/phar/phar.php] Error 127
#解决的方法如下: [root@dm7-two php-5.6.6]# vi /etc/ld.so.conf #在里面加上一行 /usr/local/lib #然后运行/sbin/ldconfig [root@dm7-two php-5.6.6]# /sbin/ldconfig #编译make [root@dm7-two php-5.6.6]# make ZEND_EXTRA_LIBS='-liconv' #可能抛错: Generating phar.phar chmod: cannot access `ext/phar/phar.phar': No such file or directory make: [ext/phar/phar.phar] Error 1 (ignored) Build complete. Don't forget to run 'make test'.
#此处可以忽略 不过解决办法如下 [root@dm7-two php-5.6.6]# cd ext/phar/ [root@dm7-two php-5.6.6]# cp ./phar.php ./phar.phar 然后到php5.4文件夹 [root@dm7-two php-5.6.6]# make ZEND_EXTRA_LIBS='-liconv' [root@dm7-two php-5.6.6]# make test [root@dm7-two php-5.6.6]#make install |
/usr/bin/ld: cannot find -liconv完成PHP安装;将php.ini文件复制到指定目录下,同时重启apache,在Apache安装目录下的htdocs目录下创建测试文件test.php.
[root@dm7-one php-5.6.6]# cp /usr/local/php/php-5.6.6/php.ini-development /usr/local/php/lib/php.ini [root@dm7-one php-5.6.6]# cd /usr/local/apache2/htdocs/ [root@dm7-one htdocs]# vi test.php 添加如下文本: <?php phpinfo(); ?> |
在浏览器中输入目标ip地址和文件名,如:http://192.168.136.2/test.php,查看是否刷新出PHP配置信息页面,如下:
若未正常刷新出页面,可尝试重新启动apache,刷新页面尝试,若还未出现配置页面,则可能为安装问题,请返回上述步骤重试。
在该页面中有几个重要配置信息注意,如下:
php.ini路径是否加载为所指定的路径:
安装的PHP版本是否为安全线程:
默认的extension加载路径:
#进入DM安装目录bin目录下 [root@dm7-one bin]# cd /home/dmdba/dmdbms/bin [root@dm7-one bin]# cp libphp56ts_dm.so php56ts_pdo_dm.so /usr/local/php/lib/php/extensions/no-debug-zts-20131226/ #进入存放php.ini文件路径 [root@dm7-one bin]# cd /usr/local/php/lib/ [root@dm7-one lib]# vi php.ini #在php.ini中添加如下内容 extension=libphp53ts_dm.so extension=php56ts_pdo_dm.so ; 添加 php.ini 中有关连接的配置 [dm] ; 是否允许持久性连接 dm.allow_persistent = 1 ; 允许建立持久性连接的最大数. -1 为没有限制. dm.max_persistent = -1 ; 允许建立连接的最大数(包括持久性连接). -1 为没有限制. dm.max_links = -1 ; 默认的主库地址 dm.default_host = localhost ; 默认的连接用户名 dm.default_user = SYSDBA ; 默认的连接口令. dm.default_pw = SYSDBA ; 连接超时,这个参数未实际的用到,等待服务器支持 dm.connect_timeout = 10 ; 对于各种变长数据类型,每列最大读取的字节数。如果它设置为 0 或是小于 0,那么,读取变长字段时,将显示 NULL 值 dm.defaultlrl = 4096 ; 是否读取二进制类型数据,如果它设置为 0,那么二进制将被 NULL 值代替 dm.defaultbinmode = 1 ; 是否允许检察持久性连接的有效性,如果设置为 ON,那么当重用一个持久性连接时,会检察该连接是否还有效 dm.check_persistent = ON |
重新启动apache,刷新PHP配置页面,查看DM模块是否已经成功加载,若成功加载,则会有如下图所示:
显示成功加载DM连接模块和PDO连接模块。若未刷新,则加载失败,请检查是否配置出错;另可开启记录错误信息日志, 协助检查。配置信息如下图:
可看到记录错误信息日志已开启,但为设定错误日志生成目录,还不会打印错误信息,具体操作如下:
[root@dm7-one bin]# cd /usr/local/php/lib/ [root@dm7-one lib]# vi php.ini #修改如下配置项 log_errors=On error_log=/usr/local/php/php_error.log |
配置一下LD_LIBRARY_PATH环境变量(dm安装的bin 路径),例如凝思的是/etc/profile。
5)测试PHP连接DM数据库
参照PHP连接MySql,三种连接MySQL的API接口,DM提供面向对象的接口和PDO接口,由于apache默认的Web站点目录为/usr/local/apache2/htdocs,可在该目录下编辑.php文件,如下:
- 面向对象接口
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <style type="text/css"> <!-- body,td,th { font-size: 20px; } --> </style></head> <body><?php /* 连接选择数据库 */ $link = dm_connect("localhost", "SYSDBA", "SYSDBA") or die("Could not connect : " . dm_error()); print "Connected successfully"; /* 执行 SQL 查询 */ $query = " select * from sys.dba_tables;"; $result = dm_query($query) or die("Query failed : " . dm_error()); /* 在 HTML 中打印结果 */ print "<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\">\n"; while ($line = dm_fetch_array($result, DM_ASSOC)) { print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n"; /* 断开连接 */ dm_close($link); ?> </body> </html> |
- PDO接口
<?php $dm_conf = array( 'host' => '127.0.0.1:5236', 'db' => 'DAMENG', 'db_user' => 'SYSDBA', 'db_pwd' => 'SYSDBA', ); $pdo = new PDO("dm:host=" . $dm_conf['host'] . ";dbname=" . $dm_conf['db'], $dm_conf['db_user'], $dm_conf['db_pwd']);//创建一个pdo对象 $pdo->exec("set names 'utf8'"); $sql = "select * from test.test;"; $stmt = $pdo->prepare($sql); $stmt->bindValue(1, 'joshua', PDO::PARAM_STR); $rs = $stmt->execute(); if ($rs) { // PDO::FETCH_ASSOC 关联数组形式 // PDO::FETCH_NUM 数字索引数组形式 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { var_dump($row); } }
$pdo = null;//关闭连接 ?> |
在浏览器中输入目标服务器ip地址和文件名,如:http://192.168.136.2/sel.php,查看是否正常连接上数据库,查询出数据。
Windows下:
1)安装apache
将httpd-2.4.12-win32-VC11.zip解压到E:\apache\ Apache24\ Apache24下,打开cmd命令行,运行httpd -k install将Apache注册为服务。简单的配置都在Apache安装根目录下的conf/httpd.conf完成
#设置服务器根目录 ServerRoot "c:/Apache24" 改为: ServerRoot " E:\apache\ Apache24\ Apache24" #设置Apache默认主页 <IfModule dir_module> DirectoryIndex index.html </IfModule> 改为: <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> #设置ServerName #ServerName www.example.com:80 ServerName localhost:8888 #设置监听端口 Listen 80 改为: Listen 8888 #设置主目录 DocumentRoot "c:/Apache24/htdocs" <Directory "c:/Apache24/htdocs"> 改为: DocumentRoot " E:\apache\ Apache24\ Apache24\htdocs" <Directory " E:\apache\ Apache24\ Apache24\htdocs"> |
2)apache测试
启动cmd进入安装bin目录,使用命令行启动Apache:httpd -k start,启动完成后打开浏览器输入:http://localhost:8888/,如果出现“It works”字样,表示安装和配置成功!
3)PHP安装
解压php-5.6.30-Win32-VC11-x86.zip到E:\php\php下,拷贝该目录下的php.ini-development,重命名为php.ini,作为PHP的主要配置文件。同时对Apache配置文件httpd.conf做如下修改。
#设置PHPIniDir #在httpd.conf中Listen 8888后添加 PHPIniDir "E:\php\php\" #加载php5_module #在httpd.conf中一堆LoadModule xxx xxx后添加 LoadModule php5_module " E:\php\php\php5apache2_4.dll" #设置x-httpd-php #在httpd.conf中AddType application/x-gzip .gz .tgz后添加 AddType application/x-httpd-php .php |
Apache/PHP 无法启动分两种情况: 1.、Apache无法启动,没加载php也无法启动 2、Apache可以启动,但加载php后无法启动 第一种情况多数是Apache配置问题,或者80端口被占用 使用Apache的配置检查:根据错误提示,纠正错误。 如果是80端口占用,可以使用命令杀掉强占80端口的进程 第二种多数是PHP编译器的问题: 查看Apache错误日志,有类似下面这些内容: httpd.exe: Syntax error on line 63 of D:/Apache2.2/conf/httpd.conf: Cannot load D:/php/php5a pache2_4.dll into server: %1 \xb2\xbb\xca\xc7\xd3\xd0\xd0\xa7\xb5\xc4 Win32 \xd3\xa6\xd3\xc3\xb3\xcc\xd0\xf2\xa1\xa3 php5.5使用的编译器是vc11,php5.4和php5.3的是vc9,php5.2是vc6。同时还要注意是x86版本,还是x64版本。目前只有php5.5提供x64版本,其他都只有x86版本。 apache.org下载的Apache都是vc6版本,否则就根据不同文件说明安装不同的运行库。 vc11运行库x86/x64版本: http://www.microsoft.com/en-us/download/details.aspx?id=30679 vc10运行库x86版本: http://www.microsoft.com/en-us/download/details.aspx?id=5555 vc10运行库x64版本: http://www.microsoft.com/en-us/download/details.aspx?id=14632 vc9运行库x86版本: http://www.microsoft.com/en-us/download/details.aspx?id=5582 vc9运行库x64版本: http://www.microsoft.com/en-us/download/details.aspx?id=15336 如果不清楚你的情况,可以安装全部运行库,再也不用为这个问题担忧了。 如果Apache/PHP还无法启动,那最可能是php5_module模块的问题: 1、Apache2.0对应的PHP模块为 php5apache2.dll ; 2、Apache2.2对应的PHP模块为 php5apache2_2.dll; 3、Apache2.4对应的PHP模块为 php5apache2_4.dll; 换句话说,根据php5_module模块,可以知道当前版本php支持哪种Apache 所以,Apache/PHP的搭配有以下几种情况: 1、php5.2支持Apache2.0和Apache2.2; 2、php5.3、php5.4同时支持Apache2.2和Apache2.4; 3、php5.5只支持Apache2.4 ; 除非你自己手动编译php5_module模块,否则只能有以上3种选择。 如果Apache/PHP还是无法启动,检查php配置(php.ini)是否存在,运行php.exe有没有提示错误。根据错误提示,纠正错误。 |
重启成功后,在Apache设置的默认网页路径中创建.php文本,如test.php:
#添加如下内容 <?php phpinfo(); ?> |
在浏览器中输入目标ip地址和文件名,如:http://localhost:8888/test.php,查看是否刷新出PHP配置信息页面,如下:
若未正常刷新出页面,可尝试重新启动apache,刷新页面尝试,若还未出现配置页面,则可能为安装问题,请返回上述步骤重试。
在该页面中有几个重要配置信息注意,如下:
php.ini路径是否加载为所指定的路径:
安装的PHP版本是否为安全线程:
默认的extension加载路径:
该项为修改php.ini中extension_dir为” E:\php\php\ext”;
3)加载dm_php模块
因为只有32位数据库安装包上有php驱动包,安装win32dm7数据库后,将数据库安装目录下的bin目录的所有dll文件拷贝至E:\php\php\ext,对php.ini做如下修改:
#添加dm_php扩展模块 extension=php56_dm.dll extension=pdo56_dm.dll |
重新启动Apache,刷新php配置信息页面,若加载成功,会有如下配置信息:
表示模块已经成功加载,若未成功刷新页面,可开启错误信息日志,具体方法同上Linux,可能会遇到如下报错:
PHP Fatal error: Unable to start dm module in Unknown on line 0 PHP Fatal error: Unable to start PDO_DM module in Unknown on line 0 解决方法: 尝试将数据库安装目录bin下的所有dll文件拷贝至C:\Windows\SysWOW64和C:\Windows\System32,重新启动Apache。 |