2014-11-14 57 views
0

我們在開發服務器中安裝了Wordpress 4.0。我們安裝了Widgetkit(付費版),雖然配置了wordpress數據庫(這意味着:WP安裝可以沒有問題,我們可以訪問管理後端併成功登錄)。如何在Wordpress中設置Widgetkit插件的數據庫?

然而,當試圖創建幻燈片(或畫廊),這是行不通的(它不在數據庫存儲)。閱讀日誌(apache的錯誤日誌)後,我看到這個錯誤:

PHP Warning: mysql_real_escape_string(): Access denied for user 'myserverstartuser'@'localhost' (using password: NO) in /path/to/server/www/wp-content-plugins/widgetkit/helpers/widget.php on line 90, referer: http://my.server.dev/wp-admin/admin.php?page=widgetkit&task=save_slideshow

myserverstartuser代表用於啓動服務器的Linux用戶;默認情況下爲www-data)。

我去這樣的行中的插件,並看到:

'post_content' => mysql_real_escape_string(json_encode($data)), 

這是不是一個完整的線,但聲明中的一部分。但問題很明確:

  • mysql_real_escape_string函數沒有傳遞任何鏈接,因此嘗試建立並使用新鏈接。另外,沒有以前的鏈接是開放的。
  • 建立了聯繫,mysql_connect被稱爲不帶參數。
  • 這種呼叫需要合適的參數(相同的參數在WP安裝),並且由於該呼叫沒有參數,每個參數被填充有默認值(從ini_get獲得的值)。
  • [在搜索到我注意到的整個插件文件夾後]插件本身沒有任何調用ini_set以確保mysql_connect的默認值與wordpress數據庫配置中的值匹配。

AFAIK mysql擴展已被棄用,但似乎這個插件使用它。 The documentation for mysql_connect列出了我正在談論的ini值。

這意味着:該mysql_real_escape_string無法找到任何聯繫,因此它試圖打開一個新的,使用INI值。這樣的ini值永遠不會被插件設置。這意味着,除非我錯過了某些東西,否則該插件沒有鏈接到實際的Wordpress數據庫設置。

問題:是,我說什麼,完全真實的?我是否需要下載一些設置數據庫配置爲mysql擴展名的缺省ini值的東西?或者我錯過了插件配置中的某些內容?或者我應該手動調用ini_set爲DB配置中的每個參數?如果最後一個是答案:我應該在哪裏打這樣的電話?

回答

1

您可以$this->db->esc_like在widget.php文件只需更換mysql_real_escape_string

+1

你不需要把你的聯繫方式放在你的答案中。這不是和電子郵件! – 2014-12-18 23:47:50