服务器如何开启 php 的 fsockopen 函数?如果你要使用一些邮件的类,那么很多要求支持 php 的 fsockopen 函数。但是服务器默认不是开启的。下面是从网上找的 2 中开启的方法,针对不同的用户。
- echo phpinfo(); 查disable_functions,如果后面出现了fsock,fsockopen,则需要把这两个函数去掉,重启apache,然后继续下面:
方法一:
第一步:
php.ini 文件中查找
allow_url_fopen = On
使其值为 On
第二步:
php.ini 文件中查找
extension=php_openssl.dll
如果前面有分号,去掉分号
第三步:
重启 web 服务器,apache 或 IIS
还有一种情况,也就是方法二:
1. vi php.ini
找到 allow_url_fopen 这个参数设置成 On,即
allow_url_fopen = On
2. 让你的 php 支持 opensll 扩展。
默认,是没有 openssl 扩展的,只能重新编译安装。
yum install openssl openssl-devel
cd /usr/local/src/php-5.2.14/ext/openssl
/usr/local/php/bin/phpize
./configure –with-openssl –with-php-config=/usr/local/bin/php-config
make && make install
看提示,把编译成的 openssl.so 拷贝到你在 php.ini 中指定的 extension_dir 下
3. vi php.ini
加入
extension=openssl.so
4. 重启 web server
摘要: fsockopen() 函数的作用是可以用来打开一个 socket 连接,另一个函数 pfsockopen() 也有相似的功能,只不过后者是一个 "持续"(persistent) 的 fsockopen() 函数,它在脚本运行完之后并不立即断开。
一、
第一步
找到 php.ini 文件,用记事本打开,查找 allow_url_fopen = 看看后面是 off 还 on, 如果是 on,直接看下一步,如果是 off 那就修改成 on,需要注意完整的是 allow_url_fopen = on 等号的左右有空格。
allow_url_fopen = on
第二步
继续在 php.ini 文件中,查找,查找 extension=php_openssl.dll 找到以后大家注意,extension=php_openssl.dll 这段代码前面会有个 ; 号,只要把这个 ; 号删除,然后保存。
extension=php_openssl.dll
第三步
如果是 IIS 就重启 IIS
如果是 apache 就重启 apache
二、
fsockopen() 函数以 Socket 模拟 HTTP 协议 (POST)
可以进行类似真实的 http 操作,可用于采集,群发论坛发帖等等。。。
fsockopen() 函数的作用是可以用来打开一个 socket 连接,另一个函数 pfsockopen() 也有相似的功能,只不过后者是一个 "持续"(persistent) 的 fsockopen() 函数,它在脚本运行完之后并不立即断开。
fsockopen() 函数存在着比较大的安全问题,比如曾经就被黑客用来进行 PHPDDOS 攻击,因此很多主机提供商禁用了这个函数。
那么如何知道自己的主机提供商有没有禁用这个函数呢?
我们可以在任意一个网站目录下新建一个. php 文件,在其中输入如下代码:
echo phpinfo();
>
保存之后再在浏览器中访问该页面,可看到页面中呈现的是当前 PHP 的配置信息,按 Ctrl+F 搜索 allow_url_fopen 或 disable_functions,可以看到如下图所示:
在 allow_url_fopen 那一栏中,如果值为 On,并且 disable_functions 这个禁用函数列表中没有 fsockopen 函数时,则表明 fsockopen() 函数是可以使用的,否则 fsockopen() 函数可能就被禁用了。
那如何才能启用或禁用这个函数呢?
我们需要找到 php.ini 这个 PHP 配置文件,如果需要禁用,则需在其中进行如下修改:
1. 将 allow_url_fopen=On 修改成 allow_url_fopen=Off
2. 在 disable_functions = 后添加 fsockopen
如果需要启用,则只需进行相反操作。
来源: http://www.bubuko.com/infodetail-2450927.html