centos libz?centos7.2

PHP Curl出现403错误怎么办

使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问googlebaidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果设置为不使用proxy则都能正常访问。

难道googlebaidu就不让用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.baidu.com:80

>CONNECTwww.baidu.com:80HTTP/1.0

Host:www.baidu.com:80

User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)

Proxy-Connection:Keep-Alive

<HTTP/1.0403Connectionnotallowable

<X-Hint:Ifyoureadthismessageinteractively,thenyouknowwhythishappens,-)

<

*TherequestedURLreturnederror:403

*ReceivedHTTPcode403fromproxyafterCONNECT

*Closingconnection#0

...Failed.

可以看到proxy服务器工作正常,的确是baidu返回了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协议。所以我猜测,googlebaidu的服务器和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:tftpftptelnetdictldaphttpfilehttpsftps

Features:GSS-NegotiateIPv6LargefileNTLMSSLlibz

而另外一台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:tftpftptelnetdictldapldapshttpfilehttpsftps

Features:GSS-NegotiateIDNIPv6LargefileNTLMSSLlibz

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:tftpftptelnetdictldaphttpfilehttpsftps

Features:GSS-NegotiateIDNIPv6LargefileNTLMSSLlibz

看来不完全是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之所以特殊,也不排除是这种原因

如何在ubuntu上装freesurfer

1.从网上下载软件压缩包

在终端中使用如下命令:

ftp surfer.nmr.mgh.harvard.edu

用户名:anonymous;密码:空,即直接回车

cd pub/dist/freesurfer/4.5.0

dir

get freesurfer-Linux-centos4-stable-pub-v4.5.0-full.tar.gz

大约需要18个小时能下载完。

2.把文件移到需要安装的目录下,并解压缩,如放到/usr/local

mv freesurfer-Linux-centos4-stable-pub-v4.5.0-full.tar.gz/usr/local

tar zxvf freesurfer-Linux-centos4-stable-pub-v4.5.0-full.tar.gz

3.安装tcsh

apt-get tcsh

4.配置环境变量

export FREESURFER_HOME=/usr/local/freesurfer

编辑~/.bashrc文件,在最后添加下面两个语句:

export FREESURFER_HOME=/usr/local/freesurfer

source$FREESURFER_HOME/SetUpFreeSurfer.sh

5.基本安装

在终端运行如下命令:

export FREESURFER_HOME=<freesurfer_installation_directory>/freesurfer

source$FREESURFER_HOME/SetUpFreeSurfer.sh

此时,终端上会打印如下信息:

Setting up environment for FreeSurfer/FS-FAST(and FSL)

FREESURFER_HOME/usr/local/freesurfer

FSFAST_HOME/usr/local/freesurfer/fsfast

FSF_OUTPUT_FORMAT nii

SUBJECTS_DIR/usr/local/freesurfer/subjects

MNI_DIR/usr/local/freesurfer/mni

6.将.license文件复制到$FREESURFER_HOME目录下

将进行注册的时候,收到的邮件中的#---------------CUT HERE---------------之间的三行复制到一个文件中,并命名为.license文件

将.license文件复制到安装目录下的freesurfer文件中

7.安装其他库文件

cd bin

ldd tksurfer.bin

此时,会在终端打印如下信息:

linux-gate.so.1=>(0xb7f5a000)

libtix8.1.8.4.so=> not found(Tix8.4 ln-s)

libtk8.4.so=> not found(TK8.4)

libtcl8.4.so=>/usr/lib/libtcl8.4.so(0xb7e95000)或者是 not found

libGLU.so.1=>/usr/lib/libGLU.so.1(0xb7e12000)

libXmu.so.6=>/usr/lib/libXmu.so.6(0xb7dfc000)

libGL.so.1=>/usr/lib/libGL.so.1(0xb7d58000)

libXext.so.6=>/usr/lib/libXext.so.6(0xb7d4a000)

libX11.so.6=>/usr/lib/libX11.so.6(0xb7c63000)

libz.so.1=>/usr/lib/libz.so.1(0xb7c4d000)

libcrypt.so.1=>/lib/tls/i686/cmov/libcrypt.so.1(0xb7c1b000)

libdl.so.2=>/lib/tls/i686/cmov/libdl.so.2(0xb7c17000)

libpthread.so.0=>/lib/tls/i686/cmov/libpthread.so.0(0xb7bff000)

libstdc++.so.6=>/usr/lib/libstdc++.so.6(0xb7b0c000)

libm.so.6=>/lib/tls/i686/cmov/libm.so.6(0xb7ae7000)

libgcc_s.so.1=>/lib/libgcc_s.so.1(0xb7adb000)

libc.so.6=>/lib/tls/i686/cmov/libc.so.6(0xb798c000)

libXt.so.6=>/usr/lib/libXt.so.6(0xb793b000)

libSM.so.6=>/usr/lib/libSM.so.6(0xb7933000)

libICE.so.6=>/usr/lib/libICE.so.6(0xb791b000)

libGLcore.so.1=>/usr/lib/libGLcore.so.1(0xb6e05000)

libnvidia-tls.so.1=>/usr/lib/tls/libnvidia-tls.so.1(0xb6e03000)

libXau.so.6=>/usr/lib/libXau.so.6(0xb6e00000)

libxcb-xlib.so.0=>/usr/lib/libxcb-xlib.so.0(0xb6dfe000)

libxcb.so.1=>/usr/lib/libxcb.so.1(0xb6de6000)

/lib/ld-linux.so.2(0xb7f5b000)

libXdmcp.so.6=>/usr/lib/libXdmcp.so.6(0xb6de0000)

这样就完成了基本的安装,但是由于是Ubuntu环境,所以在测试的时候运行qdec会提示如下错误信息:

qdec.bin: error while loading shared libraries: libtiff.so.3: cannot open shared object file: No such file or directory

8.解决上面出现的问题

寻找到libtiff.so.4所在路径,然后建立libtiff.o.3和libtiff.so.4之间的软连接即可。

find/-name libtiff.so.4-print

ln-s/usr/lib/libtiff.so.4/usr/lib/libtiff.so.3

9.测试软件是否安装成功

recon-all--help

会打印出一些关于软件的信息

tkmedit bert orig.mgz

tkmedit bert norm.mgz-segmentation aseg.mgz$FREESURFER_HOME/FreeSurferColorLUT.tx

tksurfer bert rh pial

qdec

逐个运行上面的命令都会打开相应软件的界面

recon-all-s bert-autorecon1

会运行大概半个小时,如果没有什么问题说明软件安装成功了。

如何在linux平台上编译安装zlib软件

这段时间在重新编译LNMP,发现Linux中很多软件对zlib依存都比较大,但是系统中安装的版本都比较低,如果用yum直接升级的话,安装nginx时候没法指定zlib的目录,所以要编译安装zlib。编译的话,如果能把系统中已经安装的版本替换掉,这样才是最好的.但是由于在编译过程中,很多工具都对zlib有依存,所以掌握顺序非常必要,下面是博主在毫无指导资料的情况下,尝试了差不多一天总结出来的经验:

1,下载,解压 zlib1.2.3到/usr/local/src/下

2,查看一下zlib安装文件,rpm-ql zlib,可以看到库文件在lib64下

3,配置zlib,参数为./configure–prefix=/usr/local/zlib/,也可以加上–libdir=/lib64/直接指定库文件安装位置,这里为了我便于管理,就把所有文件放在一个目录下

4,用make进行编译

5,卸载zlib,掌握这个顺序很有必要,如果卸载早了的话,上一步就会提示失败。卸载指令 rpm-e–nodeps zlib,卸载完成之后,发现/lib64/目录下,zlib的库文件,libz.so*没有了

6,用make install安装zlib,安装完成之后,可以看到/usr/local/zlib/目录下有个lib目录,里面存放的就是zlib的库文件

7,这时候用yum等工具,会提示确实libz.so*支持,所以必须把当前共享库文件注册到系统中,打开/etc/ld.so.conf,在下面加入一行/usr/local/zlib/lib/,然后保存退出

8,用ldconfig重新更新一下cache,这时候再用yum等工具,发现运行正常了,至此,zlib就更新成功。

另外注意一下,zlib现在的最高版本是1.2.8,但是如果在centos 5.*中安装大于1.2.3的版本,会出现一些错误,上一篇博客已有讲到,不再重复。

阅读剩余
THE END