⑴ php5.3版本openssl启用失败。
1将php安装目录下ext下的php_openssl.dll、libeay32.dll、ssleay32.dll 、php_xmlrpc.dll、php_curl.dll文件复制到windows下的system或者system32文件夹中。
2将php.ini复制到windows文件夹中,打开php.ini,将“;extension=php_openssl.dll”等一些列拓展前面分号去掉;
3重启IIS或者Apache,或者其他web服务器 服务器!
⑵ PHP Curl出现403错误怎么办
使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google这些网站居然都返回403错误,而访问其他的一些网站没事,如果设置为不使用proxy则都能正常访问。
难道google就不让用proxy连接么?显然不可能,所以打开curl的信息输出(curl_setopt($this->mSh,CURLOPT_VERBOSE,1);)看看,得到以下结果:
.代码如下:
*Trying127.0.0.1...*connected
*Connectedto127.0.0.1(127.0.0.1)port8118(#0)
*EstablishHTTPproxytunneltowww..com:80
>CONNECTwww..com:80HTTP/1.0
Host:www..com:80
User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)
Proxy-Connection:Keep-Alive
<HTTP/1.0403Connectionnotallowable
<X-Hint:,thenyouknowwhythishappens,-)
<
*TherequestedURLreturnederror:403
*
*Closingconnection#0
...Failed.
可以看到proxy服务器工作正常,的确是返回了403错误,但原因肯定还在我这边。终于,从网上(1of2,2of2)得到了点启发──我使用的是proxytunnel而非proxy。
在代码中,有这么一句:
.代码如下:
curl_setopt($this->mSh,CURLOPT_HTTPPROXYTUNNEL,true);
curl_setopt($this->mSh,CURLOPT_PROXY,$phost);
php文档中没有详细说明,不过mancurl中有详细解释,两者都是代理,proxytunnel(-p参数)允许其他协议通过http代理传输,而proxy(-x参数)则只能走http协议。所以我猜测,google的服务器和curl的proxytunnel不和,所以返回403。
禁用掉上面2行代码的第一句后,curl访问恢复正常。
比较奇怪的是,几种操作系统下还不一样,一台MACOSX就要显式的禁用proxytunnel才可以,curl版本:
.代码如下:
$curl--version
curl7.16.3(powerpc-apple-darwin9.0)libcurl/7.16.3OpenSSL/0.9.7lzlib/1.2.3
Protocols:
Features:GSS-
而另外一台ubuntu则完全不受影响,怎么都能用,curl版本:
.代码如下:
$curl--version
curl7.18.2(i486-pc-linux-gnu)libcurl/7.18.2OpenSSL/0.9.8gzlib/1.2.3.3libidn/1.10
Protocols:
Features:GSS-
MT主机上的centos也没事,curl版本:
.代码如下:
$curl--version
curl7.15.5(i686-redhat-linux-gnu)libcurl/7.15.5OpenSSL/0.9.8bzlib/1.2.3libidn/0.6.5
Protocols:
Features:GSS-
看来不完全是curl版本问题,MACOSX的确与众不同啊。
还有一个原因也会导致curl返回403错误,如果设置了:
.代码如下:
curl_setopt($ch,CURLOPT_NOBODY,true);
则需要紧跟着设置:
.代码如下:
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'GET');
不然会因为http服务器不允许HEAD命令而返回403错误。参考:TroublewithacURLrequestinPHP(forums.devshed.com/php-development-5/trouble-with-a-curl-request-in-php-445222.html)。MACOSX上curl之所以特殊,也不排除是这种原因
⑶ 我想问下php这个curl为什么耗时特长,我在浏览器直接访问url是有结果的
跨域请求逻辑尽量要清晰点
另外函数使用要找效率高点的内置函数,不知道为什么你的那么多逻辑判断,很耗时的;
不要把判断逻辑放到curl里面去
⑷ 如何配置php服务器
一、Apache安装
版本解释:openssl是表示带有openssl模块,利用openssl就可以给Apache配置SSL安全链接的,也就是使用https://方式进行访问。
nossl则表示不带OpenSSL模块,无法用于SSL安全链接,在这里我们下载带OpenSSL的。
选择版本:apache_2.2.14-win32-x86-openssl-0.9.8k.msi
下载地址:http://www.apache.org/dist/httpd/binaries/win32/
首先我们在D盘(盘符根据实际情况自己选择)新建一个目录,
并且命名为“WAMP”其意义为“Wdindows Apache Mysql PhpMyAdmin” 之后安装的一些内容,也都将安装在该目录下。
1.安装说明:
运行apache安装程序,方法非常简单,弹安装界面后一直“next”
接着会出现一个界面,需要填写3个内容,分别为:Network Domain、Server Name、Administrator’s Email Address 随便填写就好,不影响内容。
在下面还有2个选项,默认选择为80端口,第二个为8080端口,根据个人需求选择,一般为默认80端口。
我们继续安装,选择Custom(自定义安装)-“next”
其中有打着红X的组件,我们单击这个组件容,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。-“next”
然后选择右下角的“change ”改变安装路径,安装到刚才建立的目录中“D:\WAMP\Apache\”-“next”
安装完毕后,电脑右下角会多出一个图标,双击打开,选择start或restart,能正常运行,至此安装完毕。
2.修改配置:
打开安装录下D:\WAMP\Apache\conf\httpd.conf 文件(修改配置文件时,不建议使用记事本,可能会对其造成影响,推荐使用Notepad++或其他编辑软件打开修改)
打开以后Ctrl+F查找所要修改的内容
在#LoadMole vhost_alias_mole moles/mod_vhost_alias.so下添加:
LoadMole php5_mole “D:/WAMP/PHP/php5apache2_2.dll”
PHPIniDir “D:/WAMP/PHP”
AddType application/x-httpd-php .php
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .html
DocumentRoot “E:/WAMP/Apache/htdocs”
修改成(这里的路径和IIS中wwwroot目录一样,用于存放网页,自定义或不做修改默认):DocumentRoot “D:/WAMP/www”
修改成(自定义或不做修改默认):
DirectoryIndex index.html
修改成:DirectoryIndex index.php default.php index.html index.htm default.html default.htm
3.测试
在D:/WAMP/www目录下 建立个index.html页面
在浏览器中输入 http://localhost/
如果能正常显示,Apache配置完毕,已经正常运行。
二、MySql安装
版本解释:The Essentials Package:不包含 embedded server and benchmark suite,有自动安装程序和配置向导,没有MySQL Documentation。
The Complete Package:包含 embedded server and benchmark suite,有自动安装程序和配置向导,有MySQL Documentation。
The Noinstall Archive:包含 embedded server and benchmark suite,没有自动安装程序和配置向导,有MySQL Documentation。
选择版本:mysql-essential-5.1.44-win32.msi
下载地址:http://www.mysql.com/downloads/mysql/
1.安装说明:
打开安装程序,单击“next”
选择custom,组件为默认选择,我们不做改动-“next”
路径设置为“D:\WAMP\Mysql”-“next”
安装好以后点击“finish”
跟着会出现一个配置向导-“next”
选择“Detailed Configuration(详细配置)”-“next”
这里有3个选项:
Developer Machine,将只用尽量少的内存;
Server Machine,将使用中等数量内存;
Dedicated MySQL Server Machine,这台服务器上面只跑mysql数据库,将占用全部的内存。
可以根据自己需求选择,这里我们选择第二种“Server Machine”-“next”
选择数据库用途,同样有3个选项:
Mutltifunctional Database多功能用途,将把数据库优化成很好的innodb存储类型和高效率的myisam存储类型;
Transactional Database Only只用于事务处理类型,最好的优化innodb,但同时也支持myisam;
Non-Transactional Databse Only非事务处理类型,适合于简单的应用,只有不支持事务的myisam类型是被支持的。
一般选择第一种多功能的,同样我们也是。-“next”
选择InnodDB的数据存放位置,一般默认就行,为了统一我填写了“WAMP/MySQL Datafiles”-“next”
选择mysql允许的最大连接数,第一种是最大20个连接并发数,第二种是最大500个并发连接数,最后一种是自定义,自己可以根据需求选择,我选择第二个-“next”
下面是选择数据库监听的端口,一般默认是3306,如果改成其他端口,以后连接数据库的时候都要记住修改的端口,否则不能连接mysql数据库,比较麻烦,这里不做修改,用mysq的默认端口:3306-“next”
这一步设置mysql的默认编码,我们选择第三个,并在Character Set菜单中,选择“gbk”编码-“next”
(注:如果要用原来数据库的数据,最好能确定原来数据库用的是什么编码,如果这里设置的编码和原来数据库数据的编码不一致,在使用的时候可能会出现乱码。)
这一步是是否要把mysql设置成windows的,一般选择设成服务,这样以后就可以通过服务中启动和关闭mysql数据库。下面的复选框也勾选上,这样,在cmd模式下,不必非到mysql的bin目录下执行命令。也就是把上下2个勾都打上,中间默认-“next”
这一步是设置mysql的超级用户密码,这个超级用户非常重要,对mysql拥有全部的权限,请设置好并牢记超级用户的密码,下面有个复选框是选择是否允许远程机器用root用户连接到你的mysql服务器上面,如果有这个需求,也请勾选。这里我们使用默认选择,在New root password和Confirm中输入密码。“next”
点击“execute”进行配置,稍微等待一会,圆点上的勾全部打上,就代表配置完毕。
2.修改配置:
打开D:\WAMP\MySQL\my.ini
设置datadir为D:/WAMP/MySQL/data/或你所要存放数据位置的目录即可。
三、PHP安装
版本解释:VC9 专门为IIS定值的脚本,使用Visual Studio 2008编译器编译,支持最新的微软组建,从而提高效率。
VC6 是为了其他WEB服务软件提供的脚本 如 Apache。
Thread Safe 现成安全,之星时会进行线程 安全检查,以防止有心要求就启动新线程(Thread)的CGI执行方式而耗尽系统资源。
Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查
选择版本:PHP5.3(5.3.1)中VC6 x86 Thread Safe下 ZIP下载
下载地址:http://windows.php.net/download/
1.安装说明
由于我们下载的的是ZIP压缩包,只需要将文件解压到“D:\WAMP\PHP”目录下即可
2.修改配置
将E:\WAMP\PHP\php.ini-development 文件修改成php.ini
打开php.ini
; extension_dir = “ext”
修改成:extension_dir = “E:\WAMP\PHP\ext”
将947行下,这些文件前面的“;”去除
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_xmlrpc.dll
;date.timezone =
修改成(很多网站没提到这里要修改,默认为美国时间,如果不修改会报错):date.timezone = Asia/Shanghai
3.测试
重启Apache(修改过配置文件 必须重启Apache才会生效)
新建个index.php 页面,代码中输入,保存文件放到“D:\WMAP\www\”目录下
打开浏览器输入:http://localhost/index.php 如果能正常显示,说明PHP配置完毕,可以查看该页面的PHP信息是否正确。
(注:在改文件中输入函数可输出大量的有关PHP当前状态的信息,如PHP版本,服务器信息和环境等。)
(注:)
接着我们测试下,是否能连接到Mysql
再新建个link.php,下代码中输入
$link=mysql_connect(“127.0.0.1″,”root”,”Mysql安装时填写的密码”);
if(!$link) echo “Mysql数据库连接失败!”;
else echo “Mysql数据库连接成功!”;
mysql_close();
?>
也保存文件放到“D:\WMAP\www\”目录下
打开浏览器输入:http://localhost/link.php 查看
四、PhpMyAdmin安装
版本解释:phpMyAdmin-3.2.5
选择版本:phpMyAdmin-3.2.5-all-languages.zip
下载地址:http://www.phpmyadmin.net/home_page/downloads.php
1.安装说明
解压到D:\WAMP\phpMyAdmin
2.修改配置
打开D:\WAMP\phpMyAdmin\libraries\config.default.php
$cfg['PmaAbsoluteUri'] = ”;
修改成(填写访问phpMyAdmin的绝对URL):$cfg['PmaAbsoluteUri'] = ‘http://localhost/PHPMyadmin/’;
$cfg['Servers'][$i]['host'] = ‘localhost’;
修改成(填写服务器地址,通常默认,不需要修改):$cfg['Servers'][$i]['host'] = ‘localhost’;
$cfg['Servers'][$i]['user'] = ‘root’;
修改成(填写Mysql用户名,这里我们默认):$cfg['Servers'][$i]['user'] = ‘root’;
$cfg['Servers'][$i]['password'] = ”;
修改成(填写Mysql密码):$cfg['Servers'][$i]['password'] = ‘Mysql PWD;
$cfg['Servers'][$i]['auth_type'] = ‘cookie’;
修改成(设置认证方法,安全因素考虑,填写成cookie):$cfg['Servers'][$i]['auth_type'] = ‘cookie’;
$cfg['blowfish_secret'] = ”;
修改成(设置短语密码,如果上面设置成cookie,那这里不能留空,不然登陆会提示错误):$cfg['blowfish_secret'] = ‘cookie’;
3.测试
打开浏览器输入:http://localhost/phpmyadmin/ 访问和登陆