我們新配置了一臺(tái)服務(wù)器但在使用dedecms系統(tǒng)時(shí)發(fā)現(xiàn)遠(yuǎn)程圖片都無法本地化了,就是無法保存遠(yuǎn)程服務(wù)器圖片到本地了,出現(xiàn)這種問題我想了可能幾個(gè)原因,下面我們一起來看看解決辦法.
原因分析:
dedecms 遠(yuǎn)程圖片本地化用到函數(shù) fsockopen函數(shù),所以我們要求空間相應(yīng)目錄可寫外還要求php的allow_url_fopen 選項(xiàng)設(shè)置為On.
修改PHP的配置文件,找到php.ini變更內(nèi)容,php.ini 文件里:
"allow_url_fopen = On"
為了防止WEB變種攻擊LINUX虛擬主機(jī)PHP 禁用allow_url_fopen功能,引用allow_url_fopen功能在客戶站點(diǎn)里運(yùn)行惡意程序.
如果上面解決不了我們看看是不是upload_tmp_dir沒開打開:
upload_tmp_dir = "C:/php/tmp"
此項(xiàng)沒有設(shè)置,將upload_tmp_dir項(xiàng)前面的分號(hào)去掉,并在后面添加好路徑,上傳就OK了,給C:/php/tmp目錄users讀取權(quán)限即可解決問題,當(dāng)然如果你沒有服務(wù)器權(quán)限,那么我們只要在程序上進(jìn)行操作了.
具體修改地方是 /include/dedehttpdown.class.php 第507行,代碼如下:
|
$this->m_fp = @fsockopen($this->m_host, $this->m_port, $errno, $errstr,10); |
|
替換為:
查看源碼
打印代碼幫助
|
$this->m_fp = @stream_socket_client($this->m_host . ':' . $this->m_port, $errno, $errstr,10); |
|
保存之后試一下看看是不是可以了,當(dāng)然如果服務(wù)器不能上外網(wǎng)也有可能不能下載遠(yuǎn)程圖片到本地,那就另當(dāng)別論了。