在windows环境下xampp如何配置多站点

 更新时间:2016年11月25日 15:27  点击:2110
新手开发php时,装环境是一个比较麻烦的问题,幸好牛人多,把php环境打在包里面一键安装,现在我们来看看一键php环境安装XAMPP(Apache+MySQL+PHP+PERL)在windows环境下如何配置多站点。

window下的hosts文件

首先找到C:WindowsSystem32driversetc目录下的hosts文件,此文件在当前目录下是无法修改的,所以必须复制出来(到桌面),然后在文件尾部添加上你所需要的站点域名

以hosts文件为例,其本身配置了 127.0.0.1 localhost 前段是表示访问的主机IP,后一段是表示要访问的域名

所以如果需要配置一个www.111cn.net的域名只需要加上 127.0.0.1 www.111cn.即可。

最后我在网上了解到windows下的hosts文件其作用就是‘将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。’应该是类似一个 key-value键值对的方式去解析域名,如果能在本机找到相应IP则访问当前IP。

apche的vhost配置文件

先找到vhost所在目录D:\xampp\apache\conf\extra,自己对应安装的xampp的目录去寻找,找到vhost文件后,打开会看到如下系统配置:

DocumentRoot "D:\xampp\htdocs"
ServerName localhost
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common

Options Indexes FollowSymLinks Includes ExecCGI
Require all granted
Order allow,deny
Allow from all
AllowOverride AuthConfig

如果你看过很多配置文件的话,相信能一眼就看清楚,因为我们之前配置了windows下的hosts文件的虚拟主机域名为www.test.com所以在vhost文件中应该这样配置:

 

 代码如下 复制代码
ServerAdmin
DocumentRoot "D:\workspace\php\project\public"
ServerName local.test.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common

<Directory "D:\workspace\php\project\public">
   Options Indexes FollowSymLinks Includes ExecCGI
   Require all granted
</Directory>

<IfModule mod_rewrite.c>

   <Directory "D:\workspace\php\project">
       RewriteEngine on
       RewriteRule  ^$ public/    [L]
       RewriteRule  (.*) public/$1 [L]
   </Directory>

   <Directory "D:\workspace\php\project\public">
       RewriteEngine On
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
   </Directory>
</IfModule>


可能不同人的Directory 目录配置不一样,一般系统默认是放在D:\xampp\htdocs下,但是为了方便放不同的几个项目,我们一般习惯的把系统默认的访问目录配置到我们的工作目录下,以我的为例:D:/workspace/php/下对应不同的项目目录。

最后如果还是不能访问的话,请检查xampp下的httpd.conf文件中的 Include conf/extra/httpd-vhosts.conf这条语句是否被注释掉,如果被注释掉则去掉注释语句。

 

本教程我们来讲讲最新版的php5.6在Linux下源码编译安装及集成到apache上,apache对php的支持是通过apache的mod_php5模块来支持的。

apache对php的支持是通过apache的mod_php5模块来支持的,这点与nginx不同。nginx是通过第三方的fastcgi处理器才可以对php进行解析。

如果源码编译安装php的话,需要在编译时指定--with-apxs2=/usr/local/apache2/bin/apxs表示告诉编译器通过apache的mod_php5模块来提供对php的解析。

同时php安装的最后一步make install时,我们会看到将动态链接库libphp5.so拷贝到apache2的安装目录的modules目录下,并且还需要在 httpd.conf配置文件中添加LoadModule语句来动态将libphp5.so模块加载进来,从而实现Apache对php的支持。

php与apache集成需要以下几个步骤:

1、安装libiconv库

2、php源码安装

3、配置apache使其支持php

4、测试php

一、安装libiconv库

libiconv库为需要做转换的应用程序提供了一个iconv命令,以实现一个字符编码到另一个字符编码的转换,比如它可以将UTF8编码转换成GB18030编码,反过来也行。

php与apache集成时一定要安装libiconv库,否则在make时系统会报错。报错信息如下:

make: *** [sapi/cli/php] Error 1

/usr/bin/ld: cannot find -liconv

collect2: ld returned 1 exit status

make: *** [sapi/cli/php] Error 1

clip_image001

 

现在开始正式安装libiconv库,首先下载libiconv库,如下:

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

clip_image002

 

解压libiconv库,如下:

tar -xf libiconv-1.14.tar.gz

clip_image003

 

安装libiconv库,首先查看安装帮助信息。如下:

./configure --help

clip_image004

 

通过上图的帮助,我们可以看到libiconv库默认的安装路径为/usr/local。现在开始安装libiconv库,如下:

./configure --prefix=/usr/local

make && make install

clip_image005

 

clip_image006

 

libiconv库安装完毕后,建议把/usr/local/lib库加入到到/etc/ld.so.conf文件中,然后使用/sbin/ldconfig使其生效。如下:

echo "/usr/local/lib">>/etc/ld.so.conf

/sbin/ldconfig

clip_image007

 

如果没有进行此步操作的话,在安装php执行make install,系统就会报错。报错信息如下:

/root/php-5.6.2/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

二、php源码安装

下载并编译php命令如下:

wget http://mirrors.sohu.com/php/php-5.6.2.tar.gz

./configure --enable-fpm --enable-mbstring --with-mysql=/usr/local/mysql --with-iconv-dir=/usr/local --with-apxs2=/usr/local/apache2/bin/apxs

clip_image008

 

clip_image009

 

注意上述命令中--enable-fpm的作用是开启php的fastcgi功能,即开启php-fpm功能。

--with-mysql=/usr/local/mysql是启用php支持mysql的功能,/usr/local/mysql是mysql数据库的安装路径。

--enable- mbstring表示启用mbstring模块mbstring模块的主要作用在于检测和转换编码,提供对应的多字节操作的字符串函数。目前php内部的编码只支持ISO-8859-*、EUC-JP、UTF-8,其他的编码的语言是没办法在php程序上正确显示的,所以我们要启用mbstring模块。

--with-iconv-dir=/usr/local指定php存放libiconv库的位置。

--with-apxs2=/usr/local/apache2/bin/apxs指定php查找apache的位置。

编译完毕后,我们再来make。在make时,我们注意要加上-liconv参数。如果不加上-liconv参数,系统在make编译会报错。报错信息如下:

Generating phar.php

php-5.3.16/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

使用命令如下:

make ZEND_EXTRA_LIBS='-liconv'

我们也可以通过修改Makefile文件,在ZEND_EXTRA_LIBS行加入-liconv。如下:

clip_image010

 

vi Makefile

clip_image011

 

make install

clip_image012

 

通过上图,我们可以很明显的看到apache配置文件httpd中启用php支持,同时也把libphp5.so文件复制到apache的模块目录下。

三、配置apache使其支持php

php安装完毕后,我们就可以通过修改apache的配置文件httpd.conf来使其支持php。

我们只需要在httpd.conf文件中加入如下两行代码:

LoadModule php5_module modules/libphp5.so

AddType application/x-httpd-php .php

注意,其中LoadModule php5_module modules/libphp5.so行,我们查看httpd.conf文件时会发现该行已经存在。那是因为在安装php时,添加的。现在我们只需要添加 AddType application/x-httpd-php .php行即可。

vi /usr/local/apache2/conf/httpd.conf

clip_image013

 

除此之外,我们还需要修改apache的默认主页文件,添加index.php。内容如下:

echo "">/usr/local/apache2/htdocs/index.php

cat /usr/local/apache2/htdocs/index.php

clip_image014

 

clip_image015

 

四、测试php

以上修改完毕后,我们重新启动apache,使用如下命令:

/etc/init.d/httpd graceful

注意该命令可以优雅的重启apache。

clip_image016

 

打开站点,如下:

clip_image017

 

通过上图,我们可以很明显的看到apache已经支持php。

LNMP环境中的nginx是不支持php的,需要通过fastcgi来处理有关php的请求。而php需要php-fpm这个组件来支持。

在php5.3.3以前的版本php-fpm是以一个补丁包的形式存在的,而php5.3.3以后的php-fpm只需要在安装php-fpm开启这个功能即可。这个也就是前边,我们再配置php使用到的那个命令--enable-fpm。

php-fpm功能开启后,我们还需要配置php-fpm。其实php-fpm的配置文件在安装php时,已经为我们提供了一个配置文件的模版。该模版为/usr/local/etc/php-fpm.conf.default,如下:

more /usr/local/etc/php-fpm.conf.default

clip_image012[4]

 

我们现在只需要复制一份该文件,并重命名为php-fpm.conf,如下:

cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

clip_image013[4]

 

为了让php-fpm已服务的形式启动。我们需要复制php安装目录下/sapi/fpm/init.d.php-fpm文件。如下:

cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

clip_image014[4]

 

通过上图,我们也可以很清楚的看到php-fpm文件目前没有执行权限。赋予php-fpm执行权限,并启动php-fpm,如下:

chmod a+x /etc/init.d/php-fpm

/etc/init.d/php-fpm start

netstat -tunlp |grep 9000

clip_image015[4]

 

通过上图,我们可以很明显的看到php-fpm已经正常启动。

注意php-fpm默认监听的是9000端口。

现在再来配置nginx,使其支持php,如下:

location ~ .php$ {

root html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

clip_image016[4]

 

然后在nginx的网站根目录下新建index.php文件内容如下:

vi /usr/local/nginx/html/index.php

clip_image017[4]

 

现在来启动nginx,如下:

/usr/local/nginx/sbin/nginx

netstat -tunlp |grep 80

clip_image018[4]

 

nginx启动完毕后,现在来访问网站,如下:

clip_image019[4]

 

clip_image020[4]

 

通过上图,我们可以很明显的看到。php目前已经安装成功,并且也成功的支持mysql数据库。同时也与nginx集成完毕。

至此。我们的php5.6的安装到此结束。

本教程总结了windows+php环境下memcache缓存和mongodb数据库安装和配置,还有Mongodb启动关闭。希望对学习memcache和mongodb的同学有所帮助。

mangodb安装

1. 下载mongodb的安装文件,我安装的windows 64位的,下载地址如下:

https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.6-signed.msi

2. 新建一个mongodb文件夹在E盘(随便放,如E:mongodb)

3. 将下载的安装文件解压,把解压的文件移动到E盘mongodb下

4. 建立mongodb数据存放目录E:mongodbdata

5. 启动mongodb(简单启动不配置服务)

E:mongodbbinmongod.exe --dbpath  E:mongodbdata

可以看到如下信息:

memcache和mongodb在windows+php环境下安装总结教程

说明安装启动成功了。

6. 在浏览器中输入http://localhost:27017/,会出现下面信息,表明mongdb已经启动好了

It looks like you are trying to access MongoDB over HTTP on the native driver port.

7、下载对应的mongodb php插件(不太好找,如果php是5.4-5.5版可用这个地址:http://pan.baidu.com/s/1sjJjsYh)并配置好。

8、在php中使用:

 代码如下 复制代码
try {
    $mongo = new Mongo('localhost');
} catch(MongoConnectionException $e) {
    var_dump($e);
}
$mongo_db = $mongo->selectDB('logdatastorage');


注:上面的代码是demo,不可在生产环境中使用。

 

memcache安装

1、64位下载

From: http://www.urielkatz.com/archive/detail/memcached-64-bit-windows/
下载:http://www.urielkatz.com/projects/memcached-win64/memcached-win64.zip
源码:http://www.urielkatz.com/projects/memcached-win64/memcached-src.rar

2、解压刚刚下载的压缩包,得到两个文件:memcached.exe(服务端主程序)、pthreadGC2.dll

3、以管理员权限运行命令提示符,定位到解压路径,安装Memcached服务,命令:

memcached.exe -d install

4、执行 开始→管理工具→服务 打开Windows服务查看工具,找到memcached服务(没找到证明没有安装成功)

5、启动Memcached:

memcached.exe -m 1024 -d start

-d为守护进程启动,不能指定端口 默认端口11211
-m为指定内存大小

6、配置Windows防火墙,为Memcached默认端口11211 添加入站规则(如果服务端和客户端都在本机,不需要这一步)

7、测试是否可以正常通讯,这里借助Telnet:

telnet 127.0.0.1 11211

如果进入一个空白的doc屏,估计OK了。第一行命令输入是看不见的,所以我一般先敲一次回车,回返回一个Error,没关系,这是说明你输入的是一个无法识别的命令;

接着看下状态,键入stats然后回车:

memcache和mongodb在windows+php环境下安装总结教程

8、下载对应的memcache php插件(如果php是5.5版可用这个地址:http://pan.baidu.com/s/1mgspf9e)并配置好。

9、在php中连接使用:

$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211);

Mongodb 安装配置,启动关闭

1.       下载mongodb的安装文件,我安装的windows 32位的,下载地址如下:

http://www.mongodb.org/dr//fastdl.mongodb.org/win32/mongodb-win32-i386-2.6.4.zip/download

2.       新建一个mongodb文件夹在E盘(随便放)

E:mongodb

3.       将下载的文件安装文件解压,把解压的文件移动到E盘mongodb下

4.       建立mongodb数据存放目录E:mongodbdata

5.       启动mongodb(简单启动不配置服务)

E:mongodbbinmongod.exe --dbpath  E:mongodbdata

E:mongodbbin>mongod.exe --dbpath  E:mongodbdata

2014-09-13T22:18:50.640+0800

2014-09-13T22:18:50.640+0800 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.

2014-09-13T22:18:50.640+0800

2014-09-13T22:18:50.765+0800 [initandlisten] MongoDB starting : pid=9204 port=27

017 dbpath=E:mongodbdata 32-bit host=20120621-1418

2014-09-13T22:18:50.765+0800 [initandlisten]

2014-09-13T22:18:50.765+0800 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.

2014-09-13T22:18:50.765+0800 [initandlisten] **       32 bit builds are limitedto less than 2GB of data (or less with --journal).

2014-09-13T22:18:50.765+0800 [initandlisten] **       Note that journaling defaults to off for 32 bit and is currently off.

2014-09-13T22:18:50.765+0800 [initandlisten] **       See http://dochub.mongodb.org/core/32bit

2014-09-13T22:18:50.765+0800 [initandlisten]

2014-09-13T22:18:50.765+0800 [initandlisten] ** NOTE: your operating system version does not support the method that MongoDB

2014-09-13T22:18:50.765+0800 [initandlisten] **       uses to detect impending page faults.

2014-09-13T22:18:50.765+0800 [initandlisten] **       This may result in slowerperformance for certain use cases

2014-09-13T22:18:50.765+0800 [initandlisten]

2014-09-13T22:18:50.765+0800 [initandlisten] targetMinOS: Windows XP SP3

2014-09-13T22:18:50.765+0800 [initandlisten] db version v2.6.4

2014-09-13T22:18:50.765+0800 [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910

2014-09-13T22:18:50.765+0800 [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1'BOOST_LIB_VERSION=1_49

2014-09-13T22:18:50.765+0800 [initandlisten] allocator: system

2014-09-13T22:18:50.765+0800 [initandlisten] options: { storage: { dbPath: "E:mongodbdata" } }

在浏览器中输入http://localhost:27017/,会出现表面mongdb已经启动好了

It looks like you are trying to access MongoDB over HTTP on the native driver port.

6.       启动好后连接到mongodb

E:mongodbbinmongo.ext

E:mongodbbin>mongo

MongoDB shell version: 2.6.4

connecting to: test

Welcome to the MongoDB shell.

For interactive help, type "help".

For more comprehensive documentation, see

        http://docs.mongodb.org/

Questions? Try the support group

        http://groups.google.com/group/mongodb-user

Server has startup warnings:

2014-09-13T22:18:50.765+0800 [initandlisten]

2014-09-13T22:18:50.765+0800 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.

2014-09-13T22:18:50.765+0800 [initandlisten] **       32 bit builds are limitedto less than 2GB of data (or less with --journal).

2014-09-13T22:18:50.765+0800 [initandlisten] **       Note that journaling defaults to off for 32 bit and is currently off.

2014-09-13T22:18:50.765+0800 [initandlisten] **       See http://dochub.mongodb.org/core/32bit

2014-09-13T22:18:50.765+0800 [initandlisten]

2014-09-13T22:18:50.765+0800 [initandlisten] ** NOTE: your operating system version does not support the method that MongoDB

2014-09-13T22:18:50.765+0800 [initandlisten] **       uses to detect impending page faults.

2014-09-13T22:18:50.765+0800 [initandlisten] **       This may result in slowerperformance for certain use cases

2014-09-13T22:18:50.765+0800 [initandlisten]

>

Mongodb的关闭:

前台运行:

如果没有使用--fork,直接可以前台退出终端关闭。通过这种方式,Mongodb将会自己做清理退出,把没有写好的数据写完成,并最终关闭数据文件。要注意的是这个过程会持续到所有操作都完成。

后台运行:

如果使用--fork在后台运行mongdb服务,那么就要通过向服务器发送shutdownServer()消息来关闭。

1、普通命令:

$ ./mongod

> use admin

> db.shutdownServer()

> db.shutdownServer()

2014-09-13T22:25:07.843+0800 DBClientCursor::init call() failed

server should be down...

2014-09-13T22:25:07.890+0800 trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed

2014-09-13T22:25:08.890+0800 warning: Failed to connect to 127.0.0.1:27017, reas

on: errno:10061由于目标机器积极拒绝,无法连接。

2014-09-13T22:25:08.890+0800 reconnect 127.0.0.1:27017 (127.0.0.1) failed failed

 couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed

>

控制台显示如下:

2014-09-13T22:25:07.625+0800 [conn1] terminating, shutdown command received

2014-09-13T22:25:07.625+0800 [conn1] dbexit: shutdown called

2014-09-13T22:25:07.625+0800 [conn1] shutdown: going to close listening sockets.

..

2014-09-13T22:25:07.625+0800 [conn1] closing listening socket: 1632

2014-09-13T22:25:07.625+0800 [conn1] shutdown: going to flush diaglog...

2014-09-13T22:25:07.625+0800 [conn1] shutdown: going to close sockets...

2014-09-13T22:25:07.625+0800 [conn1] shutdown: waiting for fs preallocator...

2014-09-13T22:25:07.625+0800 [conn1] shutdown: closing all files...

2014-09-13T22:25:07.625+0800 [conn1] closeAllFiles() finished

2014-09-13T22:25:07.625+0800 [conn1] shutdown: removing fs lock...

2014-09-13T22:25:07.625+0800 [conn1] dbexit: really exiting now

E:mongodbbin>

关闭成功

Mongodb启动帮助

E:mongodbbin>mongod --help

Options:

General options:

  -h [ --help ]               show this usage information

  --version                   show version information

  -f [ --config ] arg         configuration file specifying additional options

  -v [ --verbose ] [=arg(=v)] be more verbose (include multiple times for more

                              verbosity e.g. -vvvvv)

  --quiet                     quieter output

  --port arg                  specify port number - 27017 by default

  --bind_ip arg               comma separated list of ip addresses to listen on

                              - all local ips by default

  --maxConns arg              max number of simultaneous connections - 1000000

                              by default

  --logpath arg               log file to send write to instead of stdout - has

                              to be a file, not directory

  --logappend                 append to logpath instead of over-writing

  --timeStampFormat arg       Desired format for timestamps in log messages.

                              One of ctime, iso8601-utc or iso8601-local

  --pidfilepath arg           full path to pidfile (if not set, no pidfile is

                              created)

  --keyFile arg               private key for cluster authentication

  --setParameter arg          Set a configurable parameter

  --httpinterface             enable http interface

  --clusterAuthMode arg       Authentication mode used for cluster

                              authentication. Alternatives are

                              (keyFile|sendKeyFile|sendX509|x509)

  --auth                      run with security

  --noauth                    run without security

  --ipv6                      enable IPv6 support (disabled by default)

  --jsonp                     allow JSONP access via http (has security

                              implications)

  --rest                      turn on simple rest api

  --slowms arg (=100)         value of slow for profile and console log

  --profile arg               0=off 1=slow, 2=all

  --cpu                       periodically show cpu and iowait utilization

  --sysinfo                   print some diagnostic system information

  --dbpath arg                directory for datafiles - defaults to datadb

  --directoryperdb            each database will be stored in a separate

                              directory

  --noIndexBuildRetry         don't retry any index builds that were

                              interrupted by shutdown

  --noprealloc                disable data file preallocation - will often hurt

                              performance

  --nssize arg (=16)          .ns file size (in MB) for new databases

  --quota                     limits each database to a certain number of files

                              (8 default)

  --quotaFiles arg            number of files allowed per db, implies --quota

  --smallfiles                use a smaller default file size

  --syncdelay arg (=60)       seconds between disk syncs (0=never, but not

                              recommended)

  --upgrade                   upgrade db if needed

  --repair                    run repair on all dbs

  --repairpath arg            root directory for repair files - defaults to

                              dbpath

  --noscripting               disable scripting engine

  --notablescan               do not allow table scans

  --journal                   enable journaling

  --nojournal                 disable journaling (journaling is on by default

                              for 64 bit)

  --journalOptions arg        journal diagnostic options

  --journalCommitInterval arg how often to group/batch commit (ms)

 

Windows Service Control Manager options:

  --install                install Windows service

  --remove                 remove Windows service

  --reinstall              reinstall Windows service (equivalent to --remove

                           followed by --install)

  --serviceName arg        Windows service name

  --serviceDisplayName arg Windows service display name

  --serviceDescription arg Windows service description

  --serviceUser arg        account for service execution

  --servicePassword arg    password used to authenticate serviceUser

 

Replication options:

  --oplogSize arg       size to use (in MB) for replication op log. default is

                        5% of disk space (i.e. large is good)

Master/slave options (old; use replica sets instead):

  --master              master mode

  --slave               slave mode

  --source arg          when slave: specify master as <server:port>

  --only arg            when slave: specify a single database to replicate

  --slavedelay arg      specify delay (in seconds) to be used when applying

                        master ops to slave

  --autoresync          automatically resync if slave data is stale

Replica set options:

  --replSet arg           arg is <setname>[/<optionalseedhostlist>]

  --replIndexPrefetch arg specify index prefetching behavior (if secondary)

                          [none|_id_only|all]

Sharding options:

  --configsvr           declare this is a config db of a cluster; default port      27019; default dir /data/configdb

  --shardsvr            declare this is a shard db of a cluster; default port 27018

下面通过构造一个conf文件进行启动

文件内容如下mongodb.conf

dbpath=E:mongodbdata

logpath=E:mongodblog

logappend=true

bind_ip=127.0.0.1

port=27019

fork=true

master=true

启动:

E:mongodbbin>mongod --config E:mongodbmongodb.conf

2014-09-13T22:39:31.296+0800

2014-09-13T22:39:31.296+0800 warning: 32-bit servers don't have journaling enabl

ed by default. Please use --journal if you want durability.

2014-09-13T22:39:31.296+0800

连接mongodb报错,原因我启动时指定端口号了,不是默认的27017了,所以报错

E:mongodbbin>mongo

MongoDB shell version: 2.6.4

connecting to: test

2014-09-13T22:50:24.296+0800 warning: Failed to connect to 127.0.0.1:27017, rea

on: errno:10061由于目标机器积极拒绝,无法连接。

2014-09-13T22:50:24.312+0800 Error: couldn't connect to server 127.0.0.1:27017

127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146

exception: connect failed

指定端口号连接:

E:mongodbbin>mongo 127.0.0.1:27019

MongoDB shell version: 2.6.4

connecting to: 127.0.0.1:27019/test

Server has startup warnings:

2014-09-13T22:50:13.593+0800 [initandlisten]

2014-09-13T22:50:13.593+0800 [initandlisten] ** NOTE: This is a 32 bit MongoDB b

inary.

2014-09-13T22:50:13.593+0800 [initandlisten] **       32 bit builds are limited

to less than 2GB of data (or less with --journal).

2014-09-13T22:50:13.593+0800 [initandlisten] **       Note that journaling defaults to off for 32 bit and is currently off.

2014-09-13T22:50:13.593+0800 [initandlisten] **       See http://dochub.mongodb.org/core/32bit

2014-09-13T22:50:13.593+0800 [initandlisten]

2014-09-13T22:50:13.593+0800 [initandlisten] ** NOTE: your operating system version does not support the method that MongoDB

2014-09-13T22:50:13.593+0800 [initandlisten] **       uses to detect impending page faults.

2014-09-13T22:50:13.593+0800 [initandlisten] **       This may result in slowerperformance for certain use cases

2014-09-13T22:50:13.593+0800 [initandlisten]

>

下文小介绍在linux中PDO_MYSQL扩展的两种安装方法,希望本文章可以让各位理解在linux系统中PDO_MYSQL扩展安装使用。

方法一,

看到CakePHP文档要求安装pdo_mysql扩展,于是就尝试安装了一下。

这里我的系统是CentOS 6.0。如果你的系统是其他版本的Linux/Unix,可以参考。如果你的系统是Windows的,抱歉,以下内容不适合你,请移步。

首先是下载pdo_mysql扩展的源码包。下载页面在这里:http://pecl.php.net/package/PDO_MYSQL。可以先下载了然后用FTP传到服务器。

我是在复制了下载地址以后使用wget直接下载到服务器端的。
# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

然后是解压缩。
# tar -zxvf PDO_MYSQL-1.0.2.tgz

进入解压后的目录,然后执行phpize。
# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525

下面生成makefile。后面的两个参数必须要添加,一开始我没有添加,结果分别都提示找不到php-config和mysql的header文件。
# ./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql

在make之前还要做一个mysql的header文件的软连接。因为mysql安装的时候指定了目录,不做软连接的话,还是找不到header文件。
# ln -s /usr/local/mysql/include/* /usr/local/include/

然后make和make install。
# make
# make install

之后会提示如下,意思是扩展被安装到了如下目录里。
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

为了方便,我把pdo_mysql.so文件移动到extensions目录下。
# mv /usr/local/php/lib/php/extensions/no-debug-zts-20100525/pdo_mysql.so /usr/local/php/lib/php/extensions/

随后就可以修改php.ini文件了。

找到; extension_dir = “./”这一行,去掉注释,并修改路径。
extension_dir = “/usr/local/php/lib/php/extensions/”
这里经过我测试,发现php只会从该目录寻找扩展so,而并不寻找该目录下的子目录。所以之前我为了统一管理,把so文件都移动到该目录下。

找到; extension=php_pdo_mysql.dll这一行,去掉注释,并修改后面的文件名。
extension=pdo_mysql.so
文件名不太一样,这里要把php_前缀去掉,否则找不到文件。后面的dll是windows下的文件名,我们改成so。

最后重启apache就可以了。用phpinfo()查看发现已经生效了。


方法二

PDO_MYSQL以下操作都在Linux 系统下操作

1、下载 文件 或者 进入 在PHP源码包中进入ext/pdo_mysql

http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

2、解压文件
tar zxvf PDO_MYSQL-1.0.2.tgz

3、配置和编译文件
cd PDO_MYSQL-1.0.2
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysql
make
make install

注: 我的PHP安装在 : /usr/local/php/ mysql 安装在 : /usr/local/mysql 编译的时候注意你自己的安装目录在哪里
3、安装到PHP配置下

把这个记住,然后打开 php.ini文件,
并添加一行

extension=pdo_mysql.so

windows PDO MYSQL扩展安装


php.ini中没有开启pdo,故修改php.ini,将形如下面的代码前面去掉分号,修改后如下:

extension_dir="E:/amp/php/ext" //这里配置为你自己的ext目录路径
......
extension=php_mysql.dll
......
extension=php_pdo.dll
......
extension=php_pdo_mysql.dll

重启apache后访问又继续报以下错误:

CDbConnection 无法开启数据库连线: could not find driver
意思是无法找到数据库驱动,我又用phpinfo看了一下,PDO确实是开启了,但是PDO那一项中支持的数据库显示no value,说明无法加载php_pdo_mysql.dll这个扩展。经过多次尝试,包括更换php的版本,更换mysql的版本。但是均不奏效。难道真的无法开启php的mysql pdo扩展了吗?

在网上查了又查,终于找到解决方案

方法一:需要把php安装目录的路径加入到系统环境变量PATH中,这样就可以解决问题。
方法二:因为我是在服务器上部署的,正在运行着的服务器,所以无法重启,故也可将php安装目录下的libmysql.dll复制到windows目录下

重启apache

PHP安装ORACLE扩展的方法比较复杂了,下文本文章就为各位介绍PHP安装ORACLE扩展(oic8安装教程),如果有需要了解ORACLE扩展安装方法的话我们就一起和小编来看看。

本文主要叙述,php环境与oracle数据库不在同一台服务器上时,php环境的安装编译

按照官方说明文档 http://cn2.php.net/manual/zh/oci8.installation.php
编译php的时候要加上这个参数–with-oci8,但是加这个参数有个前提,就是必须要安装了对应的库文件。

安装库文件有两种方法:

一. 你的php环境和oracle在同一台服务器上(通常oracle都很大,这方法不合适)
二. 在你的php服务器上安装 Oracle Instant Client libraries.(这个方法适合php与oracle不在一个服务器上)

Oracle Instant Client libraries的安装步骤:详见 这里
1. 针对自己的系统下载适合的Instant Client packages安装包。其中安装包都需要Basic或者Basic Lite包(根据本链接选择一个系统平台,然后进去下载对应的Basic或者SDK等等包)

这里我下载了三个zip的包,分别是:

 代码如下 复制代码
Instant Client Package – Basic
Instant Client Package – SQL*Plus
Instant Client Package – SDK

2. 解压包到一个单独的目录,比如 “instantclient”.(我把上述三个包放到一起,然后放到了/usr/local/instantclient)

3. 在环境变量里设置库的加载路径,路径为第二部设置的路径”instantclient”。多数UNIX平台环境变量设置LD_LIBRARY_PATH,而Windows系统应该用PATH

4. 可以开始你的应用了

加载库(上述第3步骤,环境变量)
上述所述的库,需要加载到linux系统才可以,那怎么加载呢
方法一:
编辑 /etc/ld.so.conf,在里面加入一行库文件路径/usr/local/instantclient(根据实际情况而定)
注意:centos的/etc/ld.so.conf文件里是用include包含加载了/etc/ld.so.conf.d/*.conf所有文件,所以我们可以创建一个文件/etc/ld.so.conf.d/oracle.conf,在里面加入一行库文件路径/usr/local/instantclient(根据实际情况而定),而不是直接编辑/etc/ld.so.conf文件。

方法二:

设置Linux系统设置环境变量

 

 代码如下 复制代码
vim ~/.bashrc

最后一行加入

 代码如下 复制代码


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/instantclient

此处根据实际情况修改,因为上述第二步的instantclient位置放到了/usr/local/instantclient

编译PHP
如果是编译安装php则需要加上 –with-oci8参数,因为我把Instant Client packages放在了/usr/local/instantclient
所以–with-oci8参数可以这样写

 代码如下 复制代码

–with-oci8=shared,instantclient,/usr/local/instantclient

php实例编译如下:

 代码如下 复制代码

./configure --prefix=/usr/local/php-5.3 --with-config-file-path=/usr/local/php-5.3/etc --with-config-file-scan-dir=/usr/local/php-5.3/etc/php.d --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --with-openssl --enable-soap --enable-safe-mode --enable-zip --with-oci8=shared,instantclient,/usr/local/instantclient

php官方实例,这样写的./configure –with-oci8=shared,instantclient,/usr/lib/oracle//client/lib
编译时如提示找不到libclntsh.so,可以加个软链

 代码如下 复制代码

ln -s /usr/local/instantclient/libclntsh.so.12.1 /usr/local/instantclient/libclntsh.so

安装oci8拓展

使用php的pecl安装拓展

 代码如下 复制代码
./pecl install oci8

在提示输入,Instant Client packages库的路径时候录入实际路径,此处录入:

 代码如下 复制代码

shared,instantclient,/usr/local/instantclient
 

[root@localhost bin]# ./pecl install oci8
downloading oci8-2.0.8.tgz ...
Starting to download oci8-2.0.8.tgz (190,854 bytes)
.........................................done: 190,854 bytes
11 source files, building
WARNING: php_bin /usr/local/php-5.3/bin/php appears to have a suffix -5.3/bin/php, but config variable php_suffix does not match
running: phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] : shared,instantclient,/usr/local/instantclient

最后把oci8加入php.ini

 代码如下 复制代码

extension=oci8.so

查看phpinfo

PHP安装ORACLE扩展(oic8安装教程)

[!--infotagslink--]

相关文章