windows和Linux环境下php apache mysql 环境的搭建教程

 更新时间:2016年11月25日 15:29  点击:1976

windows和linux环境下php教程 apache mysql教程 环境的搭建教程
 
详解如何正确配置php开发环境
php语言在进行开发之前,需要将开发环境配置妥当,这样才能实现我们的程序完美运行。那么,如何正确的配置php开发环境呢?文章将介绍apache、mysql、php的下载、安装及配置,分别讲述在windows和linux环境下开发环境的搭建。

  一、下载apache、mysql和php

  1、apache的下载

  apache服务器可以通过官方提供的镜像地址来下载windows的apache安装程序,不过都是英文版的,而且下载速度太慢。我建议大家去华军、天空或者中关村下载最新版的安装程序,速度很快。

  2、mysql的下载

  mysql的官方网站是http://www.mysql.com。可以下载最新版本的mysql,还是那句话,建议大家去华军、天空或者中关村下载。

  3、php的下载

  php的官方网站是http://www.php.net。可以下载最新的版本。

  二、在windows下配置php开发环境

  1、apache、mysql和php的安装像安装windows其他软件一样,这里建议把apache和php软件安装在d盘目录下,把mysql软件安装在c盘,这样不需要做任何设置,mysql就可以顺利启动运行。

  2、配置开发环境

  为了让windows可以执行php,需要做进一步的工作,按以下步骤搭建好环境:

  1)在php安装目录下,找到文件php5ts.dll,将其复制到c盘system32目录下。

  2)在php安装目录下,找到文件libmysql.dll,将其复制到c盘system32目录下。

  3)在php安装目录下,找到文件php.ini,将其复制到c:windows下。这个文件是配置php的基本文件,如设置服务器根目录配置,用文本编辑器打开php.ini文件,找到"doc_root=",因为我把apache默认安装在d盘根目录下,所以,修改这个配置项的值为:doc_root=d:apache2htdocs

  提示:用户根据自己安装apache的路径,修改该配置项的值。

  4)在php.ini中找到“extension_dir ="./"”,这个配置项用来载入php的扩展模块,修改该配置项如下:extension_dir = d:phpext,(需要按自己的安装目录修改php的载入位置)。

  5)在php.ini中找到“;extension=php_mysql.dll”,把这项前面的分号去掉,表示使这个项生效。这个配置项用来使php支持mysql,这里分号起注释作用。修改完php的配置文件php.ini后,保存退出该文件。

  6)进行apache的配置。转到apache的安装目录下的conf目录,用文本编辑器打开apache的配置文件http.conf。在此文件中找到 dynamic shared object(dos) support,在loadmodule行的最后添加如下配置项:loadmodule php5_module d:/php/php5apache2.dll,(需要按自己的安装目录修改php的载入位置)。该项是通过apache来载入php模块php5apache2.dll,即php以apache的一个模块来运行。

  7)为了让apache支持.php后缀的文件,在http.conf中找到addtype项,在最后添加如下配置项:addtype application/x-httpd-php.php。找到directoryindex,在最后添加index.php。为了支持中文,找到adddefaultcharset iso-8859-1改为adddefaultcharset gb2312。修改完后保存http.conf。即完成apache的基本配置。

  注意:强烈建议对apache配置文件http.conf进行修改时,一定遵守修改一点测试一点的原则,即每次修改完一项并保存http.conf后,要重启一下apache,如果apache正常启动,则可以进行后续修改,否则,说明本次修改有误,仔细检查并重新修改。

  三、在linux下配置配置php开发环境

  1、mysql的安装

  在mysql官网下载mysql的安装文件mysql-server-4.0.20-0.i386.rpm,执行下面的命令完成mysql的安装。

  rpm -ivh mysql-server-4.0.20-0.i386.rpm

  在没有设置mysql密码的情况下,通过以下命令测试mysql是否安装成功。

  mysql -u root

  出现类似welcome to the mysql mointor. commands end with;or g的字样,说明安装成功。

  2、apache的安装

  从apache的官网下载unix版本的压缩包,以httpd-2.0.52.tar.gz为例,假设资源包放在/usr/local/src下,进入这个目录后解压缩,命令如下:

  cd /usr/local/src

  tar -zxvf httpd-2.0.52.tar.gz

  解压缩后,进入目录httpd-2.0.52,执行以下命令:

  ./configure --prefix=/usr/local/apache2 --enable--module=so

  其中--prefix=/usr/local/apache2用来指定apache的安装目录。接下来进行编译,执行一下命令完成安装。

  make

  mae install

  3、配置php开发环境的安装

  1)从php官网下载php5.1.4.tar.gz的压缩包,解压缩该文件包,命令如下:

  tar -zxf php5.1.4.tar.gz

  2)转到解压缩后的目录,执行以下命令完成php安装目录等相关配置:

  ./configure --prefix=/usr/local/php -with-mysql=/var/lib/mysql

  3)接着编译php,命令如下:

  make

  make install

  4)复制当前目录下的文件php大安装目录的lib目录下,并改名为php.ini,命令如下:

  cp php.ini-dist /usr/local/php/lib/php.ini

  5)以上配置php开发环境的安装完后,参见windows下配置的内容进行相关配置,配置项和配置方法类似。

一、mysql教程驱动mysqlnd
一直以来,php教程都是通过mysql客户端连接mysql,而现在mysql官方已经推出php版的mysql客户端,而这个mysqlnd有效降低内存的使用以及提高性能。具体可以看:
http://dev.mysql.com/downloads/connector/php-mysqlnd/
http://forge.mysql.com/wiki/PHP_MYSQLND
 
从图中可以看出,使用mysqlnd少了从mysql驱动中复制数据到php扩展这一步。mysqlnd使用copy-on-write,也就是写时复制,读引用。
mysqlnd已经内置在php5.3的源码中,编译的时候使用--with-mysql=mysqlnd、--with-mysqli=mysqlnd 和 --with-pdo-mysql=mysqlnd 安装mysqlnd驱动。
mysqlnd的优点
编译php更方便了,不需要libmysql,已经内置在源码中
  1. 编译php更方便了,不需要libmysql,已经内置在源码中
  2. 使用php许可,避免版权问题
  3. 使用php的内存管理,支持php内存限制(memory_limit)
  4. 所有数据在内存只有一份,之前的libmysql有两份,参考上图
  5. 提供性能统计功能,帮助分析瓶颈
  6. mysqli支持长连接(persistent connections)
  7. 性能绝对比libmysql要快
  8. 在驱动层增加缓存机制
看了这么多特点,有点矛盾,作为数据库教程抽象层的PDO能把不同后端的特点发挥出来吗?如果使用mysql作为数据库的话mysqli是不是更好的选择?我总觉得mysqli只是个过度产品,PDO才是未来的。
二、性能提高
  1. md5()大概提高了10%-15%的性能
  2. Better stack implementation in the engine,没明白
  3. 常量保存在ROM里(Constants moved to read-only memory),这里没明白意思
  4. 改进异常处理,操作码(opcode)更简洁
  5. 解决了include(require)_once重复打开的问题,之前once我都是用静态变量实现的,终于解决这个问题了
  6. 用gcc4编译的二进制文件将更小
  7. 整体性能提高了5%-15%
很多人觉得web的瓶颈在db,所以app应用的性能毫不在乎,我认为主要是因为app扩展比db扩展要容易得多,所以才会产生db瓶颈,但这并不意味着可以不顾虑app的性能,毕竟最终还是要在app里解决各种问题的,作为一名程序员编写高质量的代码是最基本的要求。程序的内存使用量少点和执行速度快点,在高并发下是有很效果的,有些时候你改动下实现方法,能提高几十倍也很正常,当然如果付出要很多收获很少的时候就不要太执着了,我觉得一定要有编写高质量代码的意识。
三、?:操作符
其实就是js里的||,返回的结果不是逻辑类型,而是返回本来变量的值,例如 false ?: 123返回123,而不是true。语法就是有点怪怪!

四、名字空间(namespace)

这是个很好的功能,没加入之前都是用前缀来解决命名污染的,方法有点山寨,呵呵。
五、延迟静态绑定(Late Static Binding)
我估计php的静态是在预编译时就固定好的,所以在继承的时候,父类里的self指的是父类,而不是子类。而php5.3加入了新的语法static,可以在运行时候捕捉当前类。
比较典型的例子就是单件模式了:
class ParentClass {    
static private $_instance;
private function __construct() {
}
static public function getInstance() {
if (!isset(self::$_instance)) {
self::$_instance = new self();
}
return self::$_instance;
}
}
如果继承这个父类,那子类的单件必须再重写覆盖父类的getInstance。5.3支持用static来延迟绑定,但是很遗憾,即使有static关键字却不能使用new static来实例化,不过有变通的方法
class ParentClass {    
static private $_instance;
private function __construct() {
}
static public function getInstance() {
if (!isset(self::$_instance)) {
$class = static::getClass();// 使用static延迟绑定
self::$_instance = new $class();
}
return self::$_instance;
}
static public function getClass() {
return __CLASS__;
}
}
这个新特性当前可能会有问题存在,暂时不建议使用。
六、新的魔法函数__callStatic
其实就是__call的静态版,调用的静态方法不存在会调用这个魔法函数,但是低效
七、通过变量调用静态(Variable Static Calls)
以前可以通过变量调用对象的方法,例如$instance->$method();,而静态方法不支持,5.3后就支持了可以通过$someClass::$method()调用了,但是低效。
八、日期函数date_create_from_format
把字符串转换成时间戳,如果使用strtotime的话,日期格式是php解析的,而5.3的date_create_from_format可以设置字符串的日期格式,
$date = strtotime("08-01-07 00:00:00");//php 认为格式 是年-月-日   
var_dump(date("Y-m-d", $date)); // string(10) "2008-01-07"
$date = date_create_from_format("m-d-y", "08-01-07");//告诉php格式是 月-日-年
var_dump($date->format('Y-m-d')); // string(10) "2007-08-01"
九、匿名函数(Lambda functions)和闭包(closures)
js有个很爽的地方就是支持函数式编程,php很不爽的地方就是函数太过正规了,不过5.3后php更自由了。
定义匿名函数的语法
$lambda = function () { echo "Hello World!n"; };
function replace_spaces ($text) {   
$replacement = function ($matches) {
return str_replace ($matches[1], ' ', ' ').' ';
};
return preg_replace_callback ('/( +) /', $replacement, $text);
}
function replace_spaces ($text) {   
return preg_replace_callback ('/( +) /',
function ($matches) {
return str_replace ($matches[1], ' ', ' ').' ';
}, $text);
}
产生闭包的语法
function (normal parameters) use ($var1, $var2, &$refvar) {}
引入了use语法,并且支持引用变量
十、新魔法常量__DIR__
以前只有__FILE__,为了得到当前文件所在的路径,都是用dirname(__FILE__)来得到的,现在可以用__DIR__代替了
十一、NOWDOC
php定义字符串有一种格式叫定界符.
$foo = <<this is $fubar 
ONE;
这种方式称为HEREDOC,php会解析里面的变量,而有时候我们不需要解析变量,5.3加入了NOWDOC,其实就是定界符的单引号版
$bar = <<<'TWO' this is $fubar TWO;
这样,php只把它当作字符串,变量不会解析
十二、GC
因为php本身工作机制的原因,所以php的GC机制只要高效就够了,允许少量内存泄漏,毕竟程序执行完毕就会释放所有申请的内存,根本不会有内存泄漏的问题,但这只是对于短暂运行的程序而言,如果用php编写持久执行就要考虑内存泄漏问题了。
php的GC机制采用引用计数机制,引用计数是很简单高效的GC机制,不过缺点也很明显,不能完全回收所有已无效的变量,例如变量相互引用了,就无法回收了,5.3里加入的GC函数,其实就是起到增强GC机制的作用。
gc_enable(); // 激活GC,增强GC机制,回收循环引用的无效变量 
var_dump(gc_collect_cycles()); // 强制回收已无效的变量
gc_disable(); // 禁用GC

 客户端 | ===> |负载均衡器| ===> |反向代理/缓存| ===> |web服务器| ===> |数据库教程服务器|
-------- ---------- ------------- --------- ------------
nginx squid apache,php mysql教程
eaccelerator/memcache准备工作:
引用服务器: intel(r) xeon(tm) cpu 3.00ghz * 2, 2gb mem, scisc 硬盘
操作系统:centos4.4,内核版本2.6.9-22.elsmp,gcc版本3.4.4
软件
apache 2.2.3(能使用mpm模式)
php 5.2.0(选用该版本是因为5.2.0的引擎相对更高效)
eaccelerator 0.9.5(加速php引擎,同时也可以加密php源程序
memcache 1.2.0(用于高速缓存常用数据
libevent 1.2a(memcache工作机制所需)
mysql 5.0.27(选用二进制版本,省去编译工作)
nginx 0.5.4(用做负载均衡器)
squid-2.6.stable6(做反向代理的同时提供专业缓存功能

二、编译安装
一、) 安装nginx
1.) 安装
nginx发音为[engine x],是由俄罗斯人igor sysoev建立的项目,基于bsd许可。据说他当初是f5的成员之一,英文主页:http://nginx.net。俄罗斯的一些大网站已经使用它超过两年多了,一直表现不凡。
nginx的编译参数如下:

[root@localhost]#./configure --prefix=/usr/local/server/nginx --with-openssl=/usr/include
--with-pcre=/usr/include/pcre/ --with-http_stub_status_module --without-http_memcached_module
--without-http_fastcgi_module --without-http_rewrite_module --without-http_map_module
--without-http_geo_module --without-http_autoindex_module
在这里,需要说明一下,由于nginx的配置文件中我想用到正则,所以需要 pcre 模块的支持。我已经安装了 pcre 及 pcre-devel 的rpm包,但是 ngxin 并不能正确找到 .h/.so/.a/.la 文件,因此我稍微变通了一下:

[root@localhost]#mkdir /usr/include/pcre/.libs/
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.a
[root@localhost]#cp /usr/lib/libpcre.a /usr/include/pcre/.libs/libpcre.la
然后,修改 objs/makefile 大概在908行的位置上,注释掉以下内容:

./configure --disable-shared
接下来,就可以正常执行 make 及 make install 了。

2.) 修改配置文件 /usr/local/server/nginx/conf/nginx.conf
以下是我的 nginx.conf 内容,仅供参考:

#运行用户
user nobody nobody;
#启动进程
worker_processes 2;
#全局错误日志及pid文件
error_log logs/error.log notice;
pid logs/nginx.pid;
#工作模式及连接数上限
events {
use epoll;
worker_connections 1024;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型
include conf/mime.types;
default_type application/octet-stream;
#设定日志格式
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
#设定请求缓冲
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
#开启gzip模块
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
#设定access log
access_log logs/access.log main;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
#设定负载均衡的服务器列表
ups教程tream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的squid开启3128端口
server 192.168.8.1:3128 weight=5;
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6;
}

apache服务器没什么可说的地方,尽量去官网下载个最新的。

有一个地方需要注意:php教程是以模块的形式加载到apache这个容器里面的,就是你在配置apache加载php模块的时候,注意那个路径的问题。具体配置语句

loadmodule php5_module d:/php/php5apache2.dll 是指以module方式加载php

phpinidir "d:/php" 是指明php的配置文件php.ini的位置

这个路径中尽量不要出现空格,比如我的路径是 loadmodule php5_module d:/peogram files/php/php5apache2.dll这个就会导致错误,你需要换成相对路径,比如"../php/php5apache2.dll",但是相对路径一定要正确,这要看你怎么安装各个模块的,建议安装在统一目录下,方便管理。

php就得注意一下,这个问题很让人纠结。下面是php的下载

php 5.3 (5.3.5)  window平台包下载

 

vc9 x86 non thread safe (2011-jan-05 21:37:35)

  • zip [14.96mb]
    sha1: 2fdd7b2b17d359725d9f297b6a59f17b71a913a6
  • installer [26.9mb]
    sha1: d7cfd584231e68dc9e87cdff45a6d11fa3b03689
  • debug pack [7.94mb]
    sha1: 414c30a12a402d3af30b46de4b2e0ca391872982

vc9 x86 thread safe (2011-jan-05 21:31:04)

  • zip [15.1mb]
    sha1: 7593b0ebba4b43418fd2f3c18eac83d698da46d6
  • installer [27.02mb]
    sha1: db510126e3f9b580c38fb6dd8895e5a67403a223
  • debug pack [8.29mb]
    sha1: 339f6092e4c4fee9c5a6a0f6d0f8359fbfbda60b

vc6 x86 non thread safe (2011-jan-06 19:06:20)

  • zip [13.13mb]
    sha1: b11a6a1597219d7ce10bc315cde411f37346383e
  • installer [23.84mb]
    sha1: 4249683e8b88ceed32bf12c0b883a51bb10e43d9
  • debug pack [4.86mb]
    sha1: 9fb328a8c798bfe797e1a7f683571dc3812f3aa8

vc6 x86 thread safe (2011-jan-06 18:56:08)

  • zip [13.26mb]
    sha1: 8658b5c58a9893d46290beb70aa2335226e2c523
  • installer [23.95mb]
    sha1: 05fe4fb8f03a2f9fa71d47aad60e8c9becd6bb7d
  • debug pack [5.03mb]
    sha1: 9d96d42b14f516ee5935404161836ec28b572bbf
  • 一共四种供你选择。但是一定要选对。
  • vc6是什么?
    vc6就是legacy visual studio 6 compiler,就是使用这个编译器编译的。
    vc9是什么?
    vc9就是the visual studio 2008 compiler,就是用微软的vs编辑器编译的。

    那我们如何选择下载哪个版本的php呢?
    如果你是在windows下使用apache+php的,请选择vc6版本;
    如果你是在windows下使用iis+php的,请选择vc9版本;

    那non thread safe是什么?
    non thread safe就是非线程安全;
    thread safe 是什么?
    non thread safe 是线程安全;
    官方并不建议你将non thread safe 应用于生产环境,所以我们选择thread safe 版本的php来使用

    我选择的是vc6 x86 thread safe (2011-jan-06 18:56:08),因为我是在windows下搭建的apache服务器。

    php直接解压就算是安装。按教程一步一步的走就可以。

    经常出现的问题是:

    unable to load dynamic library 'd:/server/php/ext/php_exif.dll'
     unable to load dynamic library 'd:/server/php/ext/php_fdf.dll'
     unable to load dynamic library 'd:/server/php/ext/php_ifx.dll' 

    ……

    类似的错误,解决办法是

    1.修改php.ini文件的extension_dir配置到你正确的php/ext/,因为这个文件夹里面是你所有的扩张模块,包括mysql教程之类的。

    2.把你的php安装目录下的dll文件,php/ext文件下的dll文件统统复制到widows/0system32下面去,或者你修改系统环境变量path,加上;d:/www/php;d:/www/php/ext;这是我的安装目录。这个实现的效果跟复制到system32下面是一样的,具体原因我也不知道为啥,我只知道程序运行的时候首先去system32下面找相应的库文件进行加载,如果找到就停止,如果找不到就去path下面去寻找,如果再找不到,就去配置文件extesion_dir下面去找,再找不到就报错,所以如果你电脑上以前安装过php4的话,请先把system32下面相应的dll文件删除掉。

    3.这些加载的模块,是加载还是删除是在php.ini里面配置的

    类似于extension=php_bz2.dll

    extension=php_curl.dll

    extension=php_fileinfo.dll

    extension=php_gd2.dll

    extension=php_gettext.dll

    ;extension=php_gmp.dll

    extension=php_intl.dll

    一定要注意请不要把所有的模块都启动,虽然系统资源浪费也多不了哪去,但是默认的php5安装包下并不一定存在这个模块的相应dll,所以你应该按照系统错误提示把相应的模块给停用了,停用方法,跟你是怎么开启模块是相反的。

    4.还有就是模块之间会有依赖性,比如我想要开启extension=php_exif.dll这个模块,那么就必须先开启extension=php_mbstring.dll模块,这也可能是你加模块不成功的原因。


    安装mysql很简单,直接按提示安装就行,不需要与服务器各个模块之间进行配置

    由于目前phpmyadmin的最新版本已经更新到了2.11.5.1,网上流传的很多配置方法都是以前老版本的,已经不太适应新版本的配置要求;于是flymorn顺便也把phpmyadmin2.11.5.1的配置步骤也列在下面;为了切换及调试php方便,我采用的是windows系统,本地调试。
     
        1、先下载phpmyadmin安装包:
    到国外官方网站http://www.phpmyadmin.net上,点击导航栏上的“downloads”链接进入下载页面,选择“all-languages.zip”版本下载到本地,解压;把解压缩文件放到系统指定的虚拟根目录下的phpmyadmin文件夹里(可自定义文件夹名),如flymorn的本地存放位置是d:wwwphpmyadmin里。

     

        2、找到phpmyadmin文件夹里的/libraries/config.default.php文件(旧版本是根目录下的config.inc.php文件),用支持utf-8编码的写字板打开进行编辑。 

     

        3、查找 $cfg['pmaabsoluteuri'] 
    修改为你将上传到空间的phpmyadmin的网址 
    如:$cfg['pmaabsoluteuri'] = 'http://www.piaoyi.org/phpmyadmin/'; 
    这里因为我是本地调试,我改为$cfg['pmaabsoluteuri'] = 'http://localhost/phpmyadmin/';
    注意:不要漏掉最后的反斜杠/和开头的http。

     

        4、查找 $cfg['servers'][$i]['host'] = 'localhost';(通常用默认,也有例外,可以不用修改) 

     

        5、查找 $cfg['servers'][$i]['auth_type'] = 'config'; 
    在自己的机子里调试用config;如果在网络上的空间用cookie,这里我们既然在前面已经添加了网址,就修改成cookie。
    我个人建议:无论是本地还是网络上,都建议设置成cookie,安全第一。
    同时,当auth_type这个值设置为cookie后,还有一个地方需要作出相应的修改:
    $cfg['blowfish_secret'] = '';
    改成:$cfg['blowfish_secret'] = 'www.piaoyi.org';
    这里的www.piaoyi.org自己随便定义,不超过46个字符。如果这个地方留空,将会出现上文提到的第2个错误:“配置文件现在需要绝密的短语密码(blowfish_secret)”。

     

        6、查找 $cfg['servers'][$i]['user'] = 'root'; // mysql user(用户名,自己机里用root;在网上一般为你的ftp用户名,虚拟主机提供商会告诉你的;一般不要修改) 

     

        7、查找 $cfg['servers'][$i]['password'] = '123456'; // mysql password (123456修改成连接你的mysql数据库教程的用户密码)

     

        8、查找 $cfg['defaultlang'] = 'zh'; (这里是选择语言,zh代表简体中文的意思) 还有 $cfg['defaultcharset'] = 'gb2312';(修改默认编码为国标)

     

        到这里,phpmyadmin就已经配置完成ok;你可以打开http://localhost/phpmyadmin/访问方便快捷的图形化管理软件phpmyadmin了。关于本文没有提到的配置文件里的其他选项,大家可以不用关心了也不必修改。关于具体如何操作phpmyadmin不在本文讨论的范围内,不过图形化界面,是通俗易懂,稍微看看就会用了(参考)。

     

        下面谈谈,flymorn在安装配置phpmyadmin的过程中所遇到的几个问题。

     

        第一个问题:“无法载入mcrypt扩展,请检查php配置”。

     

    1、没有正确安装mysql数据库,在系统服务中mysql相关的服务没有启动。
    2、在系统的 system32(c:windowssystem32) 目录下缺少 libmcrypt.dll文件,解决方法是找到php目录下的libmcrypt.dll,并将libmcrypt.dll复制到c:windowssystem32目录中,然后重新启动web服务。
    3、在php目录下的php.ini文件中,没有将“;extension=php_mcrypt.dll”中的前面一个“;”去掉,所以不能使用相应功能,解决方法是打开php.ini文件,找到;extension=php_mcrypt.dll改成extension=php_mcrypt.dll     //去掉前面的;使之生效
    4、mysql目录没有读取权限,正确的目录权限如下:
    administrator    完全控制
    system     完全控制
    user     读取加运行
    其他的用户权限全部删除(也可保留,但安全性不高,建议删除),然后重启mysql服务和web服务(建议修改此项后重启一下服务器)。
    5、以上方法都不行的话,再用这个方法:桌面>我的电脑>右键属性>高级>环境变量>系统变量>新建
    名:phpdir
    值:c:php(你的php在什么目录就是什么) 
    (参考来源:地址)

     

        第二个问题:“无法载入 mysql 扩展,请检查 php 配置”

     

    把 php 目录下的 libmysql.dll 复制到:c:windowssystem32 下,然后重启apache。

     

        第三个问题:“配置文件现在需要绝密的短语密码(blowfish_secret)”

     

    确保在config.default.php文件里面进行了正确的设置 :
    $cfg['servers'][$i]['auth_type']= 'cookie';
    同时
    $cfg['blowfish_secret'] = 'www.piaoyi.org'; //(这个值随便写,就是不能留空)

     

    其实这个问题,我碰到了确实很郁闷,如果按照我在上面提到的配置方法做了,应该不会提示这个错误。经过我2个多小时不停的修改config.default.php配置文件,始终提示这个错误,几乎达到了崩溃的边缘了。

     

    然后就是灵光一现,突然发现:我把auth_type认证方式改为http,改为config时,打开页面始终出现这个错误,也就是说改变了认证模式,并没有对phpmyadmin起作用,难道是其他的配置文件在影响决定着phpmyadmin?

     

    立马来到phpmyadmin根目录,赫然发现根目录下有一个config.sample.inc.php文件存在的同时,还有一个文件config.inc.php也存在!!而这个是以前老版本的配置文件,原来是这个文件捣的鬼。马上删除config.inc.php,再进入调试页面,错误消失了!问题解决。

     

    看来phpmyadmin根目录下的config.inc.php配置文件的优先级比/libraries/config.default.php的配置文件高,系统是先调用根目录里的配置文件,然后才是libraries文件夹里的配置文件,艾,这个问题,折腾了这么久,呜呼哀哉。总归解决了,舒一口气啊。

     

        第四个问题:“#2003-服务器没有响应”。

     

    遇到这个问题多半是mysql数据库没有启动,建议直接在在:控制面板-管理工具-服务里面把mysql启动。关于是否启动,你可以在任务管理器里查看是否有“mysqld-nt.exe”这样的进程,如有有,则说明mysql已经启动。
      
        第五个问题:“没有发现php的扩展设置mbstring”。  

     

    修改 c:windows 下的 php.ini 文件,找到 ;extension=php_mbstring.dll 把;去掉,保存 php.ini,重新启动apache即可。

hessian是什么?
看到这个单词我还不知道怎么读,音标是[hes]读黑森。
hessian是一个轻量级的远程的数据交换工具,使用简单的方法提供了rmi(远程方法调用)的功能. 相比webservice,hessian更简单、快捷。采用的是二进制rpc协议,因为采用的是二进制协议,所以它很适合于发送二进制数据
hessian是独立于语言的。
二、在php教程中怎么用的呢?
你是不是认为这个和soap一样在php.ini中开启一个就可以使用了,我也这么认为的。可
是我要告诉你的是这样的想法是错误的。
需要去下载一个hessianphp的库来使用。
下载地址http://hessianphp.sourceforge.net/
三、看看怎么使用。
1、服务器端。
复制代码 代码如下:
<?php
include_once('hessianphp/dist/hessianservice.php');
class helloworldservice
{
public function __construct()
{
}
public function add($a, $b)
{
return $a+$b;
}
}
$wrapper = new hessianservice();
$wrapper->registerobject(new helloworldservice);
$wrapper->displayinfo = true;
$wrapper->service();
?>

服务器端结果

2、客户端
复制代码 代码如下:
<?php
require_once 'hessianphp/dist/hessianclient.php';
hessian::errorreporting(hessian_silent);
$url = 'http://localhost/info.php';
$proxy = & new hessianclient($url);
$sum = $proxy->add(3, 5);
echo $sum;
if(hessian::error()) {
$errors = hessian::error();
print_r($erros->message);
//var_dump($errors);
}
?>

client结果

[!--infotagslink--]

相关文章