Linux下最新版php5.6源码安装与apache/nginx集成教程

 更新时间:2016年11月25日 15:27  点击:1495
本教程我们来讲讲最新版的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的安装到此结束。

php_imagick是一个可以供PHP调用ImageMagick功能的PHP扩展。使用这个扩展可以使PHP具备和ImageMagick相同的功能,现在我们来看看在Linux下php如何安装imagick。

说明:
php安装目录:/usr/local/php5
php.ini配置文件路径:/usr/local/php5/etc/php.ini
Nginx安装目录:/usr/local/nginx
Nginx网站根目录:/usr/local/nginx/html

1、安装编译工具
yum install wget make gcc gcc-c++ gtk+-devel zlib-devel openssl openssl-devel pcre-devel kernel keyutils patch perl

2、安装ImageMagick
系统运维www.osyunwei.com温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接
cd /usr/local/src#进入软件包存放目录
wgethttp://www.imagemagick.org/download/ImageMagick.tar.gz#下载ImageMagick
tar zxvf ImageMagick.tar.gz#解压
cd ImageMagick-6.7.9-3#进入安装目录
./configure --prefix=/usr/local/imagemagick#配置
make#编译
make install#安装
export PKG_CONFIG_PATH=/usr/local/imagemagick/lib/pkgconfig/#设置环境变量

3、安装imagick
cd /usr/local/src
wgethttp://pecl.php.net/get/imagick-3.0.1.tgz#下载imagick
tar zxvf imagick-3.0.1.tgz
cd imagick-3.0.1
/usr/local/php5/bin/phpize#用phpize生成configure配置文件
./configure --with-php-config=/usr/local/php5/bin/php-config --with-imagick=/usr/local/imagemagick#配置
make#编译
make install#安装
备注:在安装过程中出现错误,一般是由于缺少编译工具包导致,可根据提示参照第一步安装相应的工具包即可
安装完成之后,出现下面的界面,记住以下路径,后面会用到
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/#imagick模块路径

4、配置php支持imagick
vi /usr/local/php5/etc/php.ini#编辑配置文件,在最后一行添加以下内容
extension="imagick.so"

5、测试
vi /usr/local/nginx/html/phpinfo.php#编辑,输入以下代码
<?php
phpinfo();
?>
wq!#保存退出
vi /usr/local/nginx/html/imagick.php#编辑,输入以下代码
<?php
header('Content-type: image/jpeg');
$image = new Imagick('www.osyunwei.com.jpg');
// If 0 is provided as a width or height parameter,
// aspect ratio is maintained
$image->thumbnailImage(300, 225);
echo $image;
?>

新手开发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这条语句是否被注释掉,如果被注释掉则去掉注释语句。

 

本教程总结了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

[!--infotagslink--]

相关文章

  • PHP7快速编译安装的步骤

    编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
  • Rstudio中安装package出现的问题及解决

    这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • PHP编译安装后PHP-FPM使用笔记

    PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25
  • vscode安装git及项目开发过程

    这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
  • Visual Studio 2015下载和安装图文教程

    这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • Node调试工具JSHint的安装及配置教程

    现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。  JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
  • Centos中彻底删除Mysql(rpm、yum安装的情况)

    我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15
  • 在PyCharm中安装PaddlePaddle的方法

    这篇文章主要介绍了在PyCharm中安装PaddlePaddle的方法,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-05
  • Ubuntu20.04安装cuda10.1的步骤(图文教程)

    这篇文章主要介绍了Ubuntu20.04安装cuda10.1的步骤(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-30
  • linux服务器快速卸载安装node环境(简单上手)

    这篇文章主要介绍了linux服务器快速卸载安装node环境(简单上手),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • Postman安装与使用详细教程 附postman离线安装包

    这篇文章主要介绍了Postman安装与使用详细教程 附postman离线安装包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-05
  • uni-app从安装到卸载的入门教程

    这篇文章主要介绍了uni-app从安装到卸载的入门教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-15
  • vs2019安装和使用详细图文教程

    这篇文章主要介绍了vs2019安装和使用详细图文教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • RHEL6.5编译安装MySQL5.6.26教程

    一、准备编译环境,安装所需依赖包yum groupinstall 'Development' -y yum install openssl openssl-devel zlib zlib-devel -y yum install readline-devel pcre-devel ncurses-devel bison-devel cmake -y二、编译安...2015-10-21
  • tomcat9 下载安装和配置+整合到eclipse的教程详解

    这篇文章主要介绍了tomcat9 下载安装和配置+整合到eclipse,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-28
  • Apache启动报错No space left on device: AH00023该怎么解决

    Apache启动报错No space left on device: AH00023错误可能是进程导致了,虽然小编不知道什么原因但网上提供的解决办法确实是可以解决我们的问题,下面来看看。对于这类错误是因为linux系统的ipc信号量造成的,apache启动时...2015-10-21
  • win2003 安装软件之PHP5 图文安装教程

    本教程共分八篇:系统安装与设置篇、软件安装与设置篇、文件及文件夹权限篇、系统服务篇、安全策略篇、系统组件篇、注册表篇、软件安全篇。本篇讨论的是第二篇软件安装与设置篇的第七部分:安装软件之PHP 5 安装图解。 ...2016-01-27
  • mac系统OS X10.10版本安装最新5.7.9mysql的方法

    用过mac的朋友都反映很好用,不仅美观,性能好,关键是他的系统底层对于开发人员来说,无疑就是一个最大的好处,用习惯linux的人就知道mac的强大。但是也有一点最蛋疼的是,mac的习惯跟windows两个概念,习惯了windows,难免会有点不...2015-10-30