惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
S
Security @ Cisco Blogs
月光博客
月光博客
V
Vulnerabilities – Threatpost
The Hacker News
The Hacker News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cisco Talos Blog
Cisco Talos Blog
J
Java Code Geeks
Scott Helme
Scott Helme
S
Schneier on Security
腾讯CDC
博客园 - 司徒正美
L
Lohrmann on Cybersecurity
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
V
Visual Studio Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
小众软件
小众软件
博客园 - Franky
Attack and Defense Labs
Attack and Defense Labs
美团技术团队
IT之家
IT之家
TaoSecurity Blog
TaoSecurity Blog
SecWiki News
SecWiki News
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
PCI Perspectives
PCI Perspectives
量子位
T
Threat Research - Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
Cyberwarzone
Cyberwarzone
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
L
LINUX DO - 最新话题
Forbes - Security
Forbes - Security
罗磊的独立博客
宝玉的分享
宝玉的分享
Simon Willison's Weblog
Simon Willison's Weblog
雷峰网
雷峰网
www.infosecurity-magazine.com
www.infosecurity-magazine.com
人人都是产品经理
人人都是产品经理
N
News and Events Feed by Topic

博客园 - FantasySoft

穿在身上的手机——M-Dress 团购之道——双赢才是核心 Demand Media——深谙中庸之道的新媒体 云中谁寄锦书来,盛大也! 《黑客》月刊中文版第一期正式发布,很给力!推荐围观! 比尔•盖茨:未来最好的教育来自互联网 CaptureDeviceManager.getDeviceList方法返回null对象问题探究 为了生活更美好,玩游戏吧! 三言两语话委托 IronPython Tools——为IronPython度身定做的IDE 从博客园口水仗想到的 lambda与闭包 由XML Literal引发的思考 作为.NET程序员,您需要IronPython么? 静态注册BroadcastReceiver的注销问题 大道至简——Michael看iPad 波哥大BRT带来的启示 Timberland的企业社会责任 比尔•盖茨谈教育
PHP菜鸟手记——如何解决无法装载动态链接库的问题
FantasySoft · 2010-11-15 · via 博客园 - FantasySoft

2010-11-15 14:26  FantasySoft  阅读(4713)  评论()    收藏  举报

为了兑现“做最懂技术的产品经理”的诺言,我上周开始捣腾PHP了。虽然早在大学读书的时候,我也曾经玩过一小段时间的PHP,不过到如今,也忘得一干二净了。所以,偶和一个PHP菜鸟无异。既然是菜鸟,自然先从搭建PHP开发环境开始了。

首先,从PHP的官方网站下载了PHP 5.2.14 For Windows的压缩包,解压至D盘的PHP目录;随后下载了Apache HTTP Server的最新版本——2.2.17,是MSI格式的,安装也非常简单。接着就是将PHP与HTTP Server关联起来——让HTTP Server能够处理php请求,其实也就是修改httpd.conf文件了。有关这一点,网上的资料已经非常详细,官方的介绍在这里。环境搭建好了之后,为了让PHP能够更强大,接下来就是通过修改PHP.ini文件来装载所需的PHP Extention(PHP扩展)了,而这些扩展在Windows平台下就是一个个动态链接库(DLL文件)。这下老大难的问题来了——无法装载某些动态链接库(PHP startup: Unable to load dynamic library)。对于这个问题,我们通过Google能够找到如下的解决方案:

  1. 切记修改Windows的环境变量,在PATH环境变量当中增加PHP所在的路径以及PHP扩展所在的路径;
  2. 如果第一点做了之后,仍然无法解决,就要留意被加载的动态链接库所依赖的DLL文件是否缺失。PHP官方提供了一个在Windows下安装PHP扩展的指南,里面指出了依赖关系。 

通常上述两个方案就能解决无法装载动态链接库的问题了,但是也会有例外的。上个星期我在搭建PHP开发环境的时候,就遇到了无法装载php_curl.dll动态链接库的问题。不管是环境变量还是依赖的DLL文件(官方文档指出:php_curl.dll所依赖的文件是libeay32.dllssleay32.dll)都是齐备的,这让我百思不得其解。我把网上能够找到的办法都试了个遍,甚至还把相关的dll文件全部复制到了Windows的system32目录当中(其实这样做是毫无意义的)。这个小问题让我整个周末如鲠在喉,甚是不爽。经过一番思考,我还是把问题定位到了动态链接库所依赖的DLL文件缺失上。

尽管官方文档告诉我php_curl只依赖上述两个DLL文件,但这是真的么?于是,我在下载了查看DLL依赖关系的软件——Dependency Walker。用这个软件一看,果然不出我所料:php_curl.dll所依赖的zlib.dll不存在!找到问题根源,接下来的事情都好办了,通过Google找到zlib的老巢,下载最新的zlib.dll,然后将该文件放到PHP的安装目录下即可(这里仍然需要注意两点,一是对于下载的DLL文件,如果文件名不是zlib.dll,需要改为zlib.dll;二是PHP安装的目录必须加入到PATH环境变量中)。至此,问题解决!