2017-08-16 663 views
4

我有一臺較舊的Synology設備(DSM v5.2-5967 Update 4,phpmyadmin v4.4.7-0103),它有一些本地網站,可以運行php頁面。我想將它遷移到我的新Synology設備(DSM V6.1.3-15152 Update 1,phpmyadmin v4.6.6-0172)。當從Package Center安裝新版本的phpmyadmin時,我需要下載Maria DB和PHP 5.6,但這不是DSM 5的要求。此外,DSM 6現在支持Web Station中的選項,我可以在其中配置http後端服務器和PHP版本。我將它設置爲5.6,與phpmyadmin一起安裝。如何使用Synology從php頁面連接到mysql服務器?

這裏是爲我所用的舊DSM工作代碼:

<?php 
define ("DB_HOST", "localhost"); // Your database host name 
define ("DB_USER", "root"); // Your database user 
define ("DB_PASS", ""); // Your database password 
define ("DB_NAME", "groceries"); // Your database name 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection."); 
$db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database"); 
?> 

此代碼現在返回「無法建立連接」。其他網站不處理此返回500服務器錯誤。我嘗試用Synology設備的名稱替換localhost,但無濟於事。 PHP文件本身工作正常,但我無法連接到數據庫。我無法在任何地方看到Maria DB的控制面板,因此我不知道是否缺少任何設置。這是一個新的設備,有一個新的安裝包,所以我甚至沒有改變root密碼。

我甚至嘗試從Package Center安裝Apache 2.4,並將其設置爲新Web Station設置中的後端服務器,並重新啓動NAS。但是phpyadmin仍然顯示「nginx/1.11.10」作爲Web服務器。作爲參考,我的舊NAS在Web服務器下顯示Apache,但我沒有安裝Apache軟件包。

我不知所措。有沒有人試圖使用Synology DSM 6連接到一個mysql數據庫,並活着講述故事?

+3

**警告* *:您正在使用[** **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068),它已從**的最新版本中**完全刪除。你應該使用[現代替換](http://php.net/manual/en/mysqlinfo.api.choosing.php)。 – Quentin

+1

雖然你不應該真的在使用mysql_ *函數,正如其他人已經注意到的那樣,你應該至少在失敗時暫時打印出「mysql_error()」的值:這將是連接失敗時的實際錯誤消息,可能會說明發生了什麼。 (另外,phpMyAdmin的工作?如果是這樣,你用什麼用戶名,主機和密碼連接到那裏?服務器詳細信息應位於數據庫服務器框中,位於phpMyAdmin主屏幕的右上角......) –

+0

謝謝,並且我不知道mysql_ *函數已被棄用的道歉。我能夠連接到MySQL數據庫,但它看起來像在端口3306上的PHP,而在3307上的MySQL。因此,我必須使用「本地主機:3307」作爲DB_HOST而不是普通的舊「本地主機」。我如何強制mysql移動到3306或PHP到3307? – Freakishly

回答

1

我正在使用DSM6和DS716 +,以下代碼適用於我。導致連接問題的原因太多了。如擴展未啓用等。請使用phpinfo()在任何其他步驟之前驗證。嘗試使用mysqli extension爲mysql,附加一個示例代碼爲您提供:

<?php 
$mysqli = new mysqli("localhost", "dbuser", "dbpassword", "dbname"); 

$query = "SHOW TABLES"; 
if ($result = $mysqli->query($query)) { 
    while ($row = $result->fetch_row()) { 
     printf("%s <br />\n", $row[0]); 
    } 
    $result->close(); 
} 

$mysqli->close(); 

?> 

enter image description here

PS:請留下評論對他們來說,給我一個downvote

1

的MySQL服務器正在運行?在命令行上輸入#service mysql status#mysql。您也可以使用#mysql -u USERNAME -p#mysql -u USERNAME -h localhost -p來檢查登錄。請參閱mysql man

+0

對不起,我的無知,Synology DSM的命令行在哪裏?我試圖尋找一個終端應用程序,但找不到一個。 – Freakishly

+0

如果您使用Windows,您可以使用免費工具** putty **。在Linux上,向您的Synology設備連接一個** ssh **連接。您可以使用組**管理員**中的任何帳戶登錄。要獲得root權限,您必須執行** sudo -i ** –

1

您需要添加一個端口。

我用PDO但你可以使用mysql_connect

try 
    { 
    $pdo = new PDO("mysql:host=servernameport=3307;dbname=database", "username", "password"); 
    } 
    catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 
     return $pdo; 

要找出你需要的端口,去maria db 如果權這個包會自動安裝即時消息,當您安裝phpmyadmin

相關問題