PHP官方Windows扩展资源索引

作者:罪惡 发布于:2013-9-18 15:04 Wednesday PHP教程

发现很多学PHP的同学常常因为找不到PHP在windows下对应的扩展而抓破头,因此分享一下PHP Windows所有可以找到的扩展索引资源:

PHP 5.2/5.3的Windows扩展索引站点:

在这里你可以找到诸如php_oci8.dll, php_memcache.dll, php_mongo.dll, php_apc.dll等常用的Windows扩展dll文件,也能找到一些相对冷门但是也很实用的php扩展,如php_oauth.dll, php_solr.dll等扩展

http://downloads.php.net/pierre/ 

PHP 5.3/5.4/5.5的Windows扩展索引站点:

那么你就需要到下面这个站点来找扩展了, 该站点能下载到支持php5.4/5.5的pecl扩展,

http://windows.php.net/downloads/pecl/releases/

支持的扩展文件索引:

php_amqp.dll

php_aop.dll

php_apc.dll

php_apcu.dll

php_automap.dll

php_bbcode.dll

php_bitset.dll

php_blenc.dll

php_couchbase.dll

php_dbx.dll

php_dio.dll

php_docblock.dll

php_doublemetaphone.dll

php_excel.dll

php_fann.dll

php_fribidi.dll

php_gender.dll

php_geoip.dll

php_haru.dll

php_htscanner.dll

php_http.dll

php_ibm_db2.dll

php_igbinary.dll

php_imagick.dll

php_inclued.dll

php_jsmin.dll

php_jsonc.dll

php_judy.dll

php_libevent.dll

php_lzf.dll

php_mailparse.dll

php_memcache.dll

php_memoize.dll

php_memsession.dll

php_memtrack.dll

php_mongo.dll

php_msgpack.dll

php_mysqlnd_ms.dll

php_mysqlnd_qc.dll

php_oauth.dll

php_oci8.dll

php_opcache.dll

php_operator.dll

php_pdflib.dll

php_pdo_4d.dll

php_pdo_ibm.dll

php_pdo_informix.dll

php_pdo_sqlanywhere.dll

php_pdo_sqlsrv.dll

php_pthreads.dll

php_radius.dll

php_rar.dll

php_riak.dll

php_scream.dll

php_solr.dll

php_sphinx.dll

php_spl_types.dll

php_sqlsrv.dll

php_ssh2.dll

php_stats.dll

php_stem.dll

php_stomp.dll

php_taint.dll

php_trader.dll

php_translit.dll

php_txforward.dll

php_uploadprogress.dll

php_uri_template.dll

php_varnish.dll

php_vld.dll

php_weakref.dll

php_win32ps.dll

php_win32service.dll

php_wincache.dll

php_xdebug.dll

php_xdiff.dll

php_xhprof.dll

php_xrange.dll

php_xslcache.dll

php_yaf.dll

php_yaml.dll

php_zip.dll

php_zmq.dll

 

标签: 资源分享

评论(0) 引用(0) 浏览(24541)

Gmail教程:登录Google帐号时跳转到youtube问题解决

作者:罪惡 发布于:2013-9-17 13:26 Tuesday 软件应用教程

相信有很多朋友跟我一样在登录Gmail时遇到了下面这样的问题:

登录Gmail成功后居然跳转到了youbute的同步登录页然后被墙导致无法登录Gmail.

这个问题困扰了我很久,一直想不通登录Gmail为什么会跳转到youtube.

然后今天无意中在Gmail论坛发现一个帖子,里面有个朋友提到是浏览器在某些时候(比如说翻墙)保存了youbute的Cookie导致登录成功后跳转到youtube同步。

如果是这样的话我们可以考虑在浏览器上禁止接受youtube的cookie从而影响Gmail的登录。

Google Chrome设置步骤

进入 - 设置 - 显示高级设置 - 内容设置 

首先选择所有的cookie和网站数据 

点击查看原图

在搜索栏目输入 youtube ,然后将搜索得到的cookie都删除掉

点击查看原图

如果你基本上不用youtube,那么下面的步骤可以让你一劳永逸的远离这个问题

回到内容设置页面,选择管理例外情况

点击查看原图

然后添加例外,按照下图的方式将youtube域名设定为禁止,这样浏览器就不会接受youtube的cookie,从而也不会因为在不知道的情况下接收了cookie导致gmail登录跳转到youtube的情况

点击查看原图

 

Firefox的浏览器设置方法类似

设置 - 隐私 - 历史 - 使用自定义设置 - 例外 - 添加 *.youtube.com 到阻止即可,参见下图

点击查看原图

 

 

标签: 原创 教程

评论(0) 引用(0) 浏览(21838)

Mysql教程之Windows 7/8下连接本地MySQL慢的问题解析

作者:罪惡 发布于:2013-7-9 13:38 Tuesday 数据库

最近在windows上开发应用的时候发现一个有趣的问题:我的本地程序连接本地mysql库居然要延迟1秒钟左右才能打开。

问题分析

考虑到可能是程序性能问题后,我使用了xdebug的性能日志功能输出程序运行日志后发现连接mysql的函数时间居然用掉了接近95%的执行时间。

确认是mysql性能问题后,考虑是mysql的域名反查功能影响了速度,令我失望的是,在my.ini里面关闭域名反查后问题依旧存在。

百思不得其解时我突发奇想将代码中的服务器的地址从localhost修改为了127.0.0.1,那个神奇的1秒钟延迟居然消失了。

换成ip后居然就好了,难道是localhost存在啥蹊跷?打开cmd,输入ping localhost,ping输出的结果让我十分惊讶:

点击查看原图

没错,localhost 出来的是 ipv6 地址 ::1,那么这一秒延迟的原因也很容易理解了,使用localhost连接,程序解析出来的地址是ipv6地址::1,然后去尝试连接监听这个地址的mysql, 而显然的是mysql监听的是ipv4地址127.0.0.1, ipv6连不上超时后会再去连接ipv4地址127.0.0.1, 这就是这个1秒钟延迟出现的原因。

打开windows的hosts文件,你会看到下面的注释

# localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#    ::1             localhost

 

解决方法

方案1. 使用127.0.0.1而不是localhost去连接mysql。

方案2. 编辑hosts文件强制将127.0.0.1绑定在localhost。

 

 

标签: 原创 MySQL教程 疑难杂症

评论(0) 引用(0) 浏览(15969)

个性化你的Chrome开发者工具代码主题

作者:罪惡 发布于:2013-7-8 22:13 Monday 软件应用教程

Chrome的开发者工具用久了是不是觉得有界面点审美疲劳?我们来看看下面这个开发者工具的界面:

点击查看原图

怎么样,界面看起来是不是很不错?

如何实现个性化自定义呢?Chrome开发者工具的样式是基于Html+CSS的,而Chrome开发团队也向我们提供了一个css文件自定义开发者工具的风格,这个css文件文件路径为

Mac: ~/Library/Application Support/Google/Chrome/Default/User StyleSheets/Custom.css

PC: C:\Users\[你的用户名]\AppData\Local\GoogleChrome\User Data\DefaultUser\StyleSheetsCustom.css

Linux(Chromium): ~/.config/chromium/Default/User StyleSheets/Custom.css

找到这个文件后,去网上寻找下你喜欢的风格的css, 把css规则放入上面的提到的那个css文件中即可看到效果了,下面是我搜索到的一些漂亮的风格文件。

http://darcyclarke.me/dev/inspectorskin/Custom.css

点击查看原图

 

https://gist.github.com/1150520

点击查看原图

 

https://gist.github.com/1152045

点击查看原图

 

如果你想打造自己的风格,那么可以用看看chrome-devtools://devtools/devTools.css这个css文件,这个是开发者工具原始的css样式文件,你可以基于这个文件来打造自己的个性化开发者工具主题。

标签: 原创 代码配色

评论(0) 引用(0) 浏览(12266)

PHP教程之PHP调用session_start后页面始终加载的问题研究

作者:罪惡 发布于:2013-3-2 20:10 Saturday PHP教程

今天群里有朋友说他的遇到一个有趣的问题:

一个PHP页面的执行时间比较长(15秒左右),而只要这个页面没有执行完毕,其他的页面访问都是长时间加载状态,只有那个页面执行完毕了,剩下的页面才能打开。

这是什么情况呢,经过查看,两个页面都设计到了SESSION操作,示例代码如下:

页面一:

点击查看原图

页面二:

 点击查看原图

访问页面一地时候同时访问页面二,你会发现页面二会一直保持加载状态直到页面一执行完毕。

问题的原因是什么呢?

答案是PHP的SESSION机制在作怪,PHP只会在页面代码执行完毕之后才会把SESSION数据写入到文件中,页面不执行完毕,对应的SESSION文件一直都保存着锁定状态,而其他的页面要访问这个SESSION文件就只能保持等待状态,这就是为什么页面二需要等待页面一执行完毕之后才执行。

 

知道原因后,我们应该如何解决这个问题呢?

答案很简单,PHP已经在内核中提供了相关接口:函数 session_write_close

函数官方文档的描述如下:

Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.

Session数据通常在你的脚本结束后自动保存而不需要调用session_write_close函数。但是session为了避免数据被同时写入将文件锁定住以保证每次只有一个脚本可以访问文件。当你在用框架页面同时访问SESSION的时候将会遇到因为文件锁定而出现的框架持续加载情况。你可以在处理完SESSION变量后立即使用这个函数减少多个框架的加载时间。

 

像前面的问题,我们可以直接在操作完SESSION数据后调用session_write_close函数立即写入session数据,这样就不会影响到其他页面的正常运行。代码如下:

点击查看原图

 

标签: php教程 原创 疑难杂症

评论(2) 引用(0) 浏览(18203)

CSS教程之如何给一个绝对定位的元素设定自适应宽度

作者:罪惡 发布于:2013-3-2 19:52 Saturday Web前端教程

像div这样的块元素在默认定位下你是不用担心它在页面上自适应宽度的问题的,但是一旦它使用了绝对定位,它就不会乖乖的填满你需要的宽度了。

那么,这个时候我们应该怎么办呢?

答案是用left和right来处理。

我们只需要给DIV设定样式 left: 0; right: 0;

你的div就会像你需要的那样实现自适应了。

标签: 原创 css教程 Web前端教程

评论(0) 引用(0) 浏览(19869)

Web前端开发教程之如何将你的浏览器窗口设定到指定分辨率

作者:罪惡 发布于:2013-2-27 21:26 Wednesday Web前端教程

在前端开发的时候测试自己的页面在各种分辨率下显示的情况估计是家常便饭了,而在高分屏下面测试低分辨率屏幕的显示效果估计是很多开发者头疼的事情,下面我就分享一些解决这个问题的工具和小技巧。

Firefox浏览器

推荐插件:Firesizer

介绍/安装地址:

https://addons.mozilla.org/en-US/firefox/addon/firesizer/

点击查看原图

这个小工具会在Firefox附加组件栏上面显示firefox当前窗口的大小,点击后会出现分辨率菜单可以轻松的窗口大小到你想要的分辨率。当然,你也可以自己添加更多你想测试的分辨率。

 

Chrome浏览器

推荐插件:Window Resizer

介绍/安装地址:

https://chrome.google.com/webstore/detail/window-resizer/kkelicaakdanhinjdeammmilcgefonf

点击查看原图

这个插件的功能跟firefox那个基本上差不多,区别只是预置了更多的分辨率(包括手机的)和更漂亮的界面.

 

IE浏览器

IE这块就没有啥插件了(顺便鄙视下M$),必须靠其他的方法解决问题:

在你的窗口运行JS代码即可设置到相关分辨率。

javascript:self.resizeTo(1024,768);

IE9以上的浏览器你可以在开发者工具里面的脚本控制台运行这个代码,立杆见影~!

IE9以下的的浏览器你可以让这个代码在页面上执行就行.

 

通用解决法A:

第三方软件 Sizer | Window Resizer

Sizer的下载地址

http://www.brianapps.net/sizer/

Window Resizer下载地址(这个软件是德语的,不过界面简单,相信你研究一下就能上手)

http://www.joerg-rosenthal.com/en/resize/download.html

这两款软件均可以帮助你将你指定的浏览器窗口设定到你需要的大小。

 

通用解决法B:

安装一个Windows虚拟机,装好你要测试的所有浏览器,调好分辨率去测试吧!!

 

标签: 原创 Web前端教程

评论(2) 引用(0) 浏览(20331)

Linux教程之配置权限受限制的SFTP用户教程

作者:罪惡 发布于:2012-12-27 19:07 Thursday 服务器配置

SFTP在Linux下是一个很方便很安全的文件传输工具,我常常用它在Linux服务器上替代传统的ftp来传输文件。众所周知SFTP账号是基于SSH账号的,默认情况下访问服务器的权限很大,下面的教程就是教你像ftp那样限制SFTP账号相关的访问权限。

必要条件:

你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成。

如何查看自己服务器上的ssh版本?尝试以下命令

$ ssh -V


具体实施步骤

1. 我们需要创建一个用户组,专门用于sftp用户

$ groupadd sftpusers

2. 我们创建一个用户test

$ useradd -s /bin/false -G sftpuser test

注意这里我们将test用户的shell设置为/bin/false使他没有登陆shell的权限

3. 编辑 /etc/ssh/sshd_config

找到Subsystem这个配置项,将其修改为

Subsystem  sftp  internal-sftp

然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问他们自己的home文件夹

Match Group sftpusers

ChrootDirectory %h

ForceCommand internal-sftp

AllowTcpForwarding no

保存并关闭文件

4. 修改test用户home文件夹的权限,让其属于root用户

chown root ~test

5. 重启sshd服务

$ service sshd restart

6. 测试用户账号

$ ssh test@localhost

连接会被拒绝或者无法登陆

$ sftp tesst@localhost

登陆后你会发现你的账号无法切换到除自己home目录之外的地方的

 

常见问题:

如果你链接服务器的时候出现下面的提示:

Write failed: Broken pipe                                                                                               

Couldn't read packet: Connection reset by peer

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755

标签: 原创 环境配置 Linux教程

评论(7) 引用(0) 浏览(25607)

PHP教程之JSON_DECODE/JSON_ENCODE数据时某些字段为NULL的分析

作者:罪惡 发布于:2012-11-6 10:10 Tuesday PHP教程

首先我们看一段代码,这段代码很简单,预期输出的结果是 {"text": "信春哥得永生","status":1}.

点击查看原图

可是呢,实际输出的结果却是

{"text":null,"status":1}

问题出在哪呢? 我们先来看php手册里面的说明:

点击查看原图

在手册上已经提到,这个函数只能对UTF-8编码的数据起作用,而请再回看一下第一张图右下角状态栏编码部分显示的ANSI, 说明测试数组内的中文不是UTF-8编码的,所以编码后的JSON数据对应的部分是NULL.

如何解决这个问题呢?很简单,保持你的数据编码为UTF-8就行了。如果数据的编码不是UTF-8,请使用mbstring或者iconv函数将数据编码转换为UTF-8后再编码/解码就可以了.

标签: php教程 原创 疑难杂症

评论(5) 引用(0) 浏览(12799)

PHP教程之使用unlink删除由SplFileInfo对象打开的文件提示Permission denied(权限不足)问题分析

作者:罪惡 发布于:2012-10-16 10:32 Tuesday 疑难问题分析

SqlFileInfo 对象是PHP SPL库中一个专门处理文件的对象,它向PHP开发者提供一个面向对象的方式来访问文件的接口,而我们今天的研究的问题,也就是出在这个对象上。

问题其实很简单:

我使用的Kohana框架的缓存文件类在删除过期的缓存文件时总是报没有权限删除缓存文件。

但是经过仔细的检查发现文件权限正常,自己写的php程序也能正常的删除它,但是就是不能通过Kohana的类去删除。

百思不得其解之后决定跟踪框架的内核代码,发现框架使用的是SplFileInfo对象来打开的缓存文件,通过php文档查询发现该类有一个openfile的方法, 该方法含有openmode参数(也就是和fopen函数类似功能),但是让我奇怪的是,该函数返回的SplFileObject对象没有提供关闭文件的接口。这意味着什么呢?我们来看一段例子:

点击查看原图

在上图的代码中我用SplFileInfo对象打开了由程序自己创建的text.txt并读取数据, 在代码最后用unlink函数删除这个文件。运行这个你会得到下面的报错。

Warning: unlink(./test.txt) [<a href='function.unlink'>function.unlink</a>]: Permission denied in D:\php\test.php on line 7

如果你注释掉第4,5行的代码,程序则不会有任何错误,文件会被顺利的创建并删除。

由上面的代码我们也能确定错误的原因了: 文件被打开了是删除不掉的。

确定原因后蛋疼的问题又来了:SplFileObject 没有提供关闭文件的方法。不知道这是程序设计者忘记了加关闭的接口还是故意而为之,反正是个非常隐性的bug。

经过研究后我发现可以使用unset来注销打开文件实现释放该文件的handle。测试代码如下:

点击查看原图

上面的代码运行就不会报错了。希望本文能给遇到此问题的phper们提供一点帮助~

 

标签: php教程 原创 疑难杂症

评论(3) 引用(0) 浏览(14897)

自豪的使用emlog驱动 备你妈的案