XOBM

WEB建站知识

您的位置: XOBM网   >   Apache列表   >   curl模拟post提交,遇到错误PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.3.13/ext/php_curl.dll' - 应用程序无法启动的解决办法

利用php模拟提交一般会有两种socket connection和curl

这两种操作大同小异,只不过相比较来说curl更加直观一些,不像socket需要自己构造头信息,不过curl在64位windows下有些问题,以前没有注意,最近一次安装wamp server发现开启curl后,在apache的错误日志中会发现curl无法启动:

<b>Warning</b>:  PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.3.13/ext/php_curl.dll' - 应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具。

 in <b>Unknown</b> on line <b>0</b><br />

 

这个原因应该是官方给出的版本并没有对64位做开发,找了几个64位的curl dll文件,我用的wamp server的线程安全版本,替换文件,搞定!只分享成功,不介绍资源地址的博主都是流氓,这里给出dll文件下载地址http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/,有时需要翻墙

提供两个demo:


$url = "http://localhost/base.php";
    $tid = 30996033;           
    $data = "action=vote&tid=$tid";
       
    $header = array(
            'REMOTE_ADDR:8.8.8.9',
            'CLIENT-IP:8.8.8.9',
            'X-FORWARDED-FOR:8.8.8.9',
    );
       
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    $out = curl_exec($ch);

$host = 'localhost';
            $path = '/base.php';
            $tid = 30996033;
            $data = "action=vote&tid=$tid";
            $ip = '8.8.8.8';
            $fp = fsockopen($host,80);
            if(!$fp)
            {
                    die('创建连接失败,检查主机地址或网络连接');
            }
            //构造http请求串
            $send = "POST $path HTTP/1.1rn";
            $send .= "Host: $hostrn";
            $send .= "Content-type: application/x-www-form-urlencodedrn";
            $send .= 'X-FORWARDED-FOR:8.8.8.8' . "rn";
            $send .= "CLIENT-IP:$iprn";//伪造IP
            $send .= "REMOTE_ADDR:$iprn";//伪造IP,这句并不会发现变化,地址都是127.0.0.1也就是服务器地址,网上说是什么端口映射,难道和cgi什么的有关系?那端口也应该是9000啊,不懂
            $send .= "Content-length: " . strlen($data) . "rn";
            $send .= "Connection: closernrn";
            $send .= $data . "rnrn";
            fwrite($fp, $send, strlen($send));
            $back = '';
            while(!feof($fp))
            {
                $back .= fread($fp, 1024);
            }
            fclose($fp);