文章彙整

PHP bug:使用fopen函式經由SSH2連接SFTP失效

By Astral Web 11 months agoNo Comments
首頁  /  網站設計與開發  /  PHP bug:使用fopen函式經由SSH2連接SFTP失效

PHP Bug

 

 

 

原文請參閱參考資料1,此Bug發生於PHP 5.6.28與7.0.14以上版本,舉例來說下面這段語法是連接SFTP,準備開啟一個檔案做上傳寫入:

 

PHP程式碼

紅色是帶入的變數

$sftp = ssh2_connect($host, $port);

$stream = fopen(“ssh2.sftp://” . $sftp . “/path/” . $filename, ‘w’);

 

以這個例子為例,程式執行到第二行程式碼就停止無反應,嘗試echo測試時會得到如下結果:

 

輸出結果

紅色是帶入的變數

ssh2.sftp://Resource id #NNN/path/abc.xml

 

這個結果是無法取得連線資源並繼續執行的,須修改程式碼為以下的方式:

 

PHP程式碼

紅色是帶入的變數

$sftp = ssh2_connect($host, $port);

$stream = fopen(“ssh2.sftp://” . intval($sftp) . “/path/” . $filename, ‘w’);

 

增加intval函式後將$sftp的結果轉為數字,原程式碼才可以正常執行。

 

這問題可能會發生在更新PHP版本到上述的版本以上時發生,造成原本SFTP可以運作的程式失效。

 

參考資料:

SFTP over SSH2 error

Bug #73561 opendir() using a ssh2.sftp:// resource does not work

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Category:
  網站設計與開發

留下回應

你的電子郵件地址不會被公開.

取得獨家電子商務祕技

建立更好的策略靈感

跟上全球的網路趨勢

絕佳的電商解決方案

電子商務戰略全指南

每月發送電商戰略指南,只要填寫E-mail即可訂閱!

請到您的信箱確認,即可完成訂閱。