首页 > 编程技术 > php

PHP-5.5.x + Xdebug + Zend Studio 调试环境设置

发布时间:2016-11-25 15:27

为什么不用zend debugger,反而舍本求末用个偏方呢?因zend debugger目前最高只支持到php-5.3.x,php-5.4.x和php-5.5.x搞不定,所以需要xdebug,它就一备胎。

1、下载安装xdebug
1.1 到http://xdebug.org/download.php 下载适合你的PHP版本的xdebug
1.2 复制到php安装目录的ext文件夹,改名为php_xdebug.dll
1.3 配置xdebug

在php.ini尾部添加如下

[xdebug]

zend_extension="php_xdebug.dll"

xdebug.remote_enable         = On
xdebug.remote_host           = "localhost"
xdebug.remote_port           = 9000
xdebug.remote_handler        = "dbgp"
xdebug.auto_trace            = 1
xdebug.collect_includes      = 1
xdebug.collect_params        = 1
xdebug.collect_return        = 1
xdebug.default_enable        = 1
xdebug.collect_assignments   = 1
xdebug.collect_vars          = 1
xdebug.remote_autostart      = 1
xdebug.remote_connect_back   = 1
xdebug.show_local_vars       = 1
xdebug.show_exception_trace  = 0
运行phpinfo();看有xdebug模块信息出来就是搞定了。

2、配置Zend Studio 支持xdebug
这里的配置很重要
选择Zend Studio 的 Window 》 Preference 》 PHP 》Installed Debuggers 双击 Xdebug,弹出对话框如下图

Debug Port 设为跟php.ini中设置的一样(默认是9000)。
Accept remote session(JIT) 选择localhost
允许浏览器访问网站时zend studio自动打开文件开始调试。

选项说明: http://www.111cn.net
off: 关闭浏览器访问时打开调试功能;
localhost: 通过localhost访问网页的时候打开调试。
any:只要访问服务器上的php都打开调试;
prompt:访问服务器上的php时弹出询问是否要调试。

一旦打开zend studio允许xebug调试,所有访问php页面都会进入调试。
我们可以使用easy xdebug火狐插件可在客户端控制是否开启调试。
1、首先php.ini设置
xdebug.remote_autostart = 0
不自动启动调试。
2、安装火狐插件easy xdebug,
安装好该插件后,点击如下图右下角小绿虫后,虫子上面有个小红点,这时候我们访问测试服务器的时候,Zend Studio就回自动弹出调试。

另外,可设置使用xdebug,在zend studio中对直接调试php文档,这里就不多说了。

Views – 61

 

如果你没有开启OpenSSL的话我们的不能使用ssl功能,如果我们发邮箱使用ssl加密就无法使用了,但要开启它是非常的简单的,具体如下

XAMPP打开OpenSSL方法:

(1)检查X:/xampp/php/ext目录下是否存在php_openssl.dll文件,如果不存在就先去PHP官网下载放入。
(2)打开X:/xampp/php/php.ini文件,查找extension=php_openssl.dll,如果找到了,去掉前面的分号;

如果没找到就在extension=php_curl.dll的下一行添加如下代码:

extension=php_openssl.dll

然后重启Apache就行了。

在自己编辑安装php时提示 checking for mysql_close in -lmysqlclient_r… no ,看这句我看是什么mysql问题,但结果是不是它的问题呢,下面我们一起来看看。

又在折腾服务器了~记录下自己编译php5.3.24的过程。执行了以下的 configure配置命令:

 

 代码如下 复制代码

    ./configure
    --prefix=/usr/local/php
    --with-config-file-path=/usr/local/php/etc
    --with-config-file-scan-dir=/usr/local/php/etc/conf.d
    --enable-fpm
    --with-fpm-user=webserver
    --with-fpm-group=webserver
    --with-curl
    --with-pear
    --with-gd
    --with-jpeg-dir
    --with-png-dir
    --with-zlib
    --with-xpm-dir
    --with-freetype-dir
    --with-mcrypt
    --with-mhash
    --with-mysql=/usr/local/mysql
    --with-mysqli=/usr/local/mysql
    --with-pdo-mysql=/usr/local/mysql
    --with-openssl
    --with-xmlrpc
    --with-xsl
    --with-bz2
    --with-gettext
    --disable-debug
    --enable-fpm
    --enable-exif
    --enable-wddx
    --enable-zip
    --enable-bcmath
    --enable-calendar
    --enable-ftp
    --enable-mbstring
    --enable-soap
    --enable-sockets
    --enable-sqlite-utf8
    --enable-shmop
    --enable-dba
    --enable-sysvsem
    --enable-sysvshm
    --enable-sysvmsg

遇到了如下错误:

    checking for mysql_close in -lmysqlclient_r... no
    checking for mysql_error in -lmysqlclient_r... no
    configure: error: mysql configure failed. Please check config.log for more information.

查证、搜索后,找到一blog,讲是这样的原因:

    See this bug report: http://www.111cn.net
    If you need libmysql, apply the patch or create the symlink.
    Better: Switch to mysqlnd

我也就把对于mysql, mysqli, pdo的配置选项改成了:

 代码如下 复制代码

    --with-mysql=mysqlnd
    --with-mysqli=mysqlnd
    --with-pdo-mysql=mysqlnd

编译通过~

昨天帮一朋友配置服务器结果发现apache日志中有PHP Warning: PHP Startup: Unable to load dynamic library 提示了,然后调试数据库连接发现提示Call to undefined function mysql_connect()错误,这样就想到了是mysql没有加载成功了,下面我们一起来看看问题解决办法。


连接代码

<?php
echo 'a';
$cn = mysql_connect("localhost",'你的mysql用户名','你的mysql用户密码') or die(mysql_error());
if( $cn )
{
  echo phpinfo();
}
else
{
 echo 'mysql connect fail';
}
?>

因为服务器使用的是安全php.ini所在没有错误显示,于时相看了apache安装目录的logs的errors.log日志文

件发现如下错误

PHP Warning:  PHP Startup: Unable to load dynamic library

'D:\myserver\php\ext\php_mysql.dll' - xd5xd2xb2xbbxb5xbdxd6xb8xb6xa8xb5xc4xc4

xa3xbfxe9xa1xa3rn in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library

'D:\myserver\php\ext\php_mysqli.dll' - xd5xd2xb2xbbxb5xbdxd6xb8xb6xa8xb5xc4

xc4xa3xbfxe9xa1xa3rn in Unknown on line 0

 

[Tue Dec 31 09:05:15 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 2, referer: http://localhost/
[Tue Dec 31 09:05:16 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 2, referer: http://localhost/
[Tue Dec 31 09:05:17 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 2, referer: http://localhost/
[Tue Dec 31 09:06:04 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 3, referer: http://localhost/
[Tue Dec 31 09:06:05 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 3, referer: http://localhost/
[Tue Dec 31 09:06:05 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 3, referer: http://localhost/
[Tue Dec 31 09:06:05 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 3, referer: http://localhost/
[Tue Dec 31 09:06:06 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 3, referer: http://localhost/
[Tue Dec 31 09:06:06 2013] [error] [client 127.0.0.1] PHP Fatal error:  Call to undefined

function mysql_connect() in E:\www\a.php on line 3, referer: http://localhost/

日志中有这么一句

PHP Startup: Unable to load dynamic library  'D:\myserver\php\ext\php_mysql.dll' 这个意思是

没有加载成功php_mysql文件了,还有一点是提示 PHP Fatal error:  Call to undefined function

mysql_connect(),,这个是mysql没有连接成功也就是加载mysql库失败了,根据分析有两种可能一是文件不

存在,这个问题不存因为我以前用的是这个php解压包,2是服务器环境变量问题,如果是环境变量有两种解

决办法


1,是直接在windows增加环境变量

2,直接把在d:PHP里找到php5ts.dll,libmysql.dll将其复制到c:/winnt/system32下(winNT/2000的机器),

而winXP/2003是复制到c:/windows/system32下即可

记住复制到system目录之后必须重记apache环境,如我再测试http://localhost/a.php 就可以看到

输出的phpinfo相关信息了,本站原创文章转载注明来源www.111cn.net

本文章一给大家介绍php.ini中session和cookie有关的配置详解,希望此教程对各位同学会有所帮助。

1,session.use_cookie = 1

是否采用Cookie方法传递session id值。默认是1,表示启用。

2,session.name = PHPSESSID

不 管是Cookie传递sessioin_id,还是GET方法传递session_id,都需要使用键值。他们的格式分别是Cookie:  sess_name=session_id;和/path.php?sess_name=session_id,其中sess_name就是由这里指定 的。

3,session.use_only_cookies = 0

表示只使用Cookie 的方法传递session id。我们说过,传递cookie的方法,除了cookie,还有GET方法,GET方法是不安全的方法。在用户端禁用了cookie的时候,会采用 GET方法传递session_id,可以通过这个设置尽用GET方法传递session_id。

4,session.cookie_lifetime = 0, session.cookie_path = / 以及session.cookie_domain =
如 果使用Cookie方法传递session_id的话,这里分别指定了cookie有效域、目录和时间。分别对应setcookie()函数的形 参$expire、$path和$domain。其中cookie_lifetime=0表示直到关闭浏览器才删除Cookie。还可以使用 session_set_cookie_params()函数修改这些值。

5,session_name([string $name])

获 取或更新session_name。如果传了name,则表示不使用默认的名称PHPSESSID(由session.name)指定,否则获取当前 session_name。注意:如果设置session_name,则必须在session_start()之前调用才生效。

6,session_id([string $id])

与session_name()类似,但它是读取或者设置session_id的方法。同样,设置session_id的话,必须在session_start()之前调用才有效。

7,session_set_cookie_params()和session_get_cookie_params()

通 过session_set_cookie_params()可以重新设定session.cookie_lifetime, session.cookie_path以及session.cookie_domain这三个php.ini设置。而 session_get_cookie_params()则是获取这些设定的值

标签:[!--infotagslink--]

您可能感兴趣的文章: