服務器如何開啟php的fsockopen函數? 使用發郵箱類
服務器如何開啟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文件,在其中輸入如下代碼:
<?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
如果需要啟用,則只需進行相反操作。
服務器如何開啟php的fsockopen函數? 使用發郵箱類