文档章节

windows 64下php 的curl 扩展不能工作的问题

南湖船老大
 南湖船老大
发布于 2016/10/03 14:32
字数 781
阅读 207
收藏 4
点赞 1
评论 0
PHP

很多人遇到这个问题,php在windows 64下的curl功能,要么扩展无法加载,要么即是加载了也无法使用,这都好几年了,还有人遇到,也没人说道说道,我就说道说道,免得还有人继续踩坑。

    我们都知道,PHP不是跨平台的语言。这点一定要搞清楚(要人说,PHP官方和PHP大鸟都说PHP是跨平台的,呵呵。。)

    实际上是这样的,PHP早期对 win 64位一直支持都不好,包括不支持超过4G的大文件,不支持2037年之后的日期。。PHP官方从开始支持win 64 的版本5.4开始也一直在强调

The x64 builds of PHP 5 for Windows are experimental, and do not provide 64-bit integer or large file support.

PHP 7 provides full 64-bit support.The x64 builds of PHP 7 support native 64-bit integers, LFS, memory_limit and much more.

可见,直到PHP7,官方才口头上宣布完全支持win 64环境。实际上呢?

    自从win 64诞生以来,每个PHP版本的curl类库都存在问题,要么显示Call to undefined function curl_init()错误,要么运行后得不到预期效果。具体表现就是PHP显示curl扩展已加载,并且一些简单需求CURL也能正常工作。但是一些复杂点的应用,比如上传文件实现不了。网上很多文章提到

   将libeay32.dll、ssleay32.dll 、php_curl.dll 这几个文件放在C:\WINDOWS\system32目录和syswow64这个文件夹下,并屏蔽php.ini里的curl扩展(有说要屏蔽的,有说不要的)

   然而很多场景下,这样的办法并没效。到底是什么原因导致PHP的这个bug都5,6年了还没解决呢?其实主要原因就在于PHP不是跨平台的语言,也不提倡跨平台,所以PHP开发组没有测试不同平台下功能是否一致。

    老外不迷信,所以老外的博客很早就有PHP 5.3和5.4,以及 5.5的解决办法

http://www.technoreaders.com/code/curl-on-wamp/

http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/

  把老外重新编译的dll文件替换官方的dll文件,重启就好了。如果是PHP 5.6以上的版本呢?那呵呵哒,如果恰好你不幸遇到了,那么换linux吧。。酱紫。

  记住:如果你的代码在win 64下curl使用达不到效果,别怀疑自己,这是PHP本身的问题。

  测试代码:

<?php
function curlUpload($filename, $path='') {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://image.baicai.me/pic.html'); //测试用例
        $file = realpath($filename);
        $type = mime_content_type($file);
        $pathi = pathinfo($file);
        curl_setopt($ch, CURLOPT_POST, 1);
        $fileds=[];
        if (class_exists('\CURLFile')) {
    	$fields = array('fieldNameHere' => new \CURLFile(realpath($file),$type,$pathi['basename']),'path'=>$path);
		} else {
    	$fileds = array('fieldNameHere' => "@{$file};type={$type};filename={$pathi['basename']}",'path'=>$path);
		}
        curl_setopt($ch, CURLOPT_POSTFIELDS, $fileds);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        $ret = curl_exec($ch);
        curl_close($ch);
        return $ret;
    }
   $ret= curlUpload('g:/1/mm.jpg');
   var_dump($ret);

以上代码在任意linux下均正确执行,并与预期相符。在任何WIN64环境下,文件均无法上传,包括最新PHP 7。如果你测试有不同结果,欢迎留言.

原文:http://baicai.me/article/php_curl_win64.html

© 著作权归作者所有

共有 人打赏支持
南湖船老大
粉丝 676
博文 11
码字总数 10246
作品 0
深圳
其他
wamp在win7-64位下Unable to load dynamic library php_c

wamp在win7-64位下Unable to load dynamic library phpcurl.dll 网上很多资料都类似这个: PHP在Windows下启动时提示Unable to load dynamic library phpcurl.dll问题解决 作者:朦朧中的罪惡...

冥想_ ⋅ 2014/10/28 ⋅ 0

【PHP】PHP5.3 以上curl库调用失败解决方法

最近分别在WIN7和Windows8 上分别安装php 高版本!都遇到了这个问题! 一.win7系统32位, apache2.2, php5.2升级到5.4. 这个比较容易: phpinfo发现没有加载curl; 在php.ini中设置extension...

RablePHP ⋅ 2016/06/03 ⋅ 0

php5.5-win64位下curl扩展不能开启解决方法

运行环境:window 64 / php5.5+ 错误描述:Call to undefined function curl_init() 解决方法: 1 、在网上搜了半天,谷歌百度都用上了,什么改php.ini配置文件开启curl扩展、改httpd.conf加...

码上有春天 ⋅ 2015/04/08 ⋅ 11

本地安装PHP环境并测试

我使用的是wampserver,Wamp就是Windows Apache Mysql PHP集成安装环境,即在window下的apache、php和mysql的服务器软件。 1、下载wampserver 2、停掉本地的mysql服务(如果有的话) 3、启动...

士龙 ⋅ 2013/07/14 ⋅ 0

PHP编译安装

#wget http://museum.php.net/php5/php-5.2.6.tar.gz (下载php源码) http://cn.php.net/releases/ 可以找到 #tar zxvf php-5.2.6.tar.gz #cd php-5.2.6 #./configure --prefix=/usr/local/......

晨曦之光 ⋅ 2012/03/09 ⋅ 0

W7,64位,Apache24目录,安装php的curl扩展

刚开始的时候,也觉得是版本的问题,因为以前解决的时候,都是从网上下载的dll文件,版本不对,最终因找到正确的版本才解决。所以phpcurl.dll我也认为是版本问题。 其实,我忽略了一个问题,...

小刘师傅 ⋅ 2015/08/24 ⋅ 1

Apache+php(fastcgi)x64(64bit)在windows环境下的配置

首先,本文所说的是windows 64位环境下apache和php的安装,也就是windows server 2003 以及windows server 2008r2。32位的方法相同,但是文件应该去apache和php官方下载。 我们需要做的准备工...

leeldy ⋅ 2013/04/03 ⋅ 0

php curl 保持长连接

curl 扩展默认保持长连接,即没有调用 curl_close(), 连接将保持打开状态。 http://stackoverflow.com/questions/972925/persistent-keepalive-http-with-the-php-curl-library...

jack_0110 ⋅ 2016/12/17 ⋅ 0

PHP中获取远程文件的三种方法

1.filegetcontents <?php $url = 'http://www.xxx.com/';$contents = filegetcontents($url);//如果出现中文乱码使用下面代码//$getcontent = iconv(“gb2312″, “utf-8″,filegetcontents(......

slagga ⋅ 2016/10/27 ⋅ 0

windows 64位 apachect2.4+php5.5 无法加载php_curl模块

环境:windows2008 64位,单独装了apachect2.4 php5.5版本。 今天服务迁移后,一直报call to undefined function curl_init()。 百度了一下,有很多解决方法。但是都不能成功。 最后发现少了...

谢锡鹏 ⋅ 2016/06/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 43分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部