如何使用 Synology 从 php 页面连接到 mysql 服务器?

Posted

技术标签:

【中文标题】如何使用 Synology 从 php 页面连接到 mysql 服务器?【英文标题】:How can I connect to a mysql server from a php page using Synology? 【发布时间】:2018-01-24 05:25:05 【问题描述】:

我有一台旧的 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)。从套件中心安装新版本的 phpmyadmin 时,我还需要下载 Maria DB 和 PHP 5.6,而这在 DSM 5 中不是必需的。此外,DSM 6 现在支持 Web Station 中的选项,我可以在其中配置http后端服务器和PHP版本。我将其设置为 5.6,即与 phpmyadmin 一起安装的版本。

这是在旧 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 服务器错误。我尝试将 localhost 替换为 Synology 设备的名称,但无济于事。 PHP 文件本身工作正常,但我无法连接到数据库。我在任何地方都看不到 Maria DB 的控制面板,所以我不知道我是否缺少任何设置。这是一台新设备,安装了全新的软件包,所以我什至还没有更改 root 密码。

我什至尝试从 Package Center 安装 Apache 2.4,并在新的 Web Station 设置中将其设置为后端服务器,然后重新启动 NAS。但 phpyadmin 仍将“nginx/1.11.10”显示为 Web 服务器。作为参考,我的旧 NAS 在 web server 下显示 Apache,但我没有安装 Apache 包。

我很茫然。有没有人尝试过使用 Synology DSM 6 连接到 mysql 数据库并活到现在?

【问题讨论】:

警告:您使用的 an obsolete database API 已从最新版本的 PHP 中删除。你应该使用modern replacement。 虽然您不应该真正使用 mysql_* 函数,正如其他人所指出的,但您至少应该在失败时暂时打印出 mysql_error() 的值:这将是来自的实际错误消息连接失败,并可能对正在发生的事情有所了解。 (另外,phpMyAdmin 可以工作吗?如果可以,您使用什么用户名、主机和密码进行连接?服务器详细信息应该在 phpMyAdmin 主屏幕右上角的“数据库服务器”框中...) 谢谢,我很抱歉不知道 mysql_* 函数已被弃用。我能够连接到 mysql 数据库,但看起来 php 在端口 3306 上,而 mysql 在 3307 上。因此,我必须使用“localhost:3307”作为 DB_HOST 而不是普通的旧“localhost”。如何强制 mysql 移动到 3306,或 PHP 移动到 3307? 【参考方案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();

?>

【讨论】:

【参考方案2】:

mysql-server 正在运行? #service mysql status#mysql 在命令行上。您也可以使用#mysql -u USERNAME -p#mysql -u USERNAME -h localhost -p 来检查登录。见mysql man

【讨论】:

抱歉我的无知,Synology DSM 的命令行在哪里?我试图寻找一个终端应用程序,但找不到。 如果您使用 Windows,您可以使用免费工具 putty。在 Linux 上,与您的 Synology 设备建立 ssh 连接。您可以使用 administrators 组中的任何帐户登录。要获得 root 访问权限,您必须执行 sudo -i【参考方案3】:

你需要添加一个端口。

我使用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

【讨论】:

【参考方案4】:

我和你有同样的问题。我用以下主机参数解决了它:

主机:127.0.0.1:3307

我正在安装一个从 Duplicator Pro 插件导入的 Wordpress 网站,它对我有用。

【讨论】:

以上是关于如何使用 Synology 从 php 页面连接到 mysql 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

在 Synology DS218play 上,WordPress 无法连接到用户数据库,但 phpmyadmin 可以

如何使用 PHP PDO 从 Mac 连接到 Sql Server?

如何将 HTML 页面连接到 MongoDB?

如何从 Ubuntu 18.04 使用 PHP 连接到 MSSQL Server?

如何从 PHP 5.4 连接到 MS SQL 2000?

无法使用 PHP 页面连接到 MySQL