LINUX环境下PHP连接DM7搭建过程

Linux下:

在Linux环境下配置安装PHP环境(Apache2),参考了一些别人的配置方法,下面就是安装步骤:

  1. 安装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安装

  1. 修改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!说明成功。

  1. 安装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文件,如下:

  1. 面向对象接口

<!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>

  1. 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服务,可能会遇到如下问题:

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。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值