【发布时间】:2014-12-20 08:02:33
【问题描述】:
我正在将我们的 php 管理移动到新服务器(托管),但在尝试迁移的系统时,我检测到我们的代码无法访问 MySql 数据库。该代码以前有效,新的虚拟主机表示它支持 PDO。我们只能通过 ftp 和 phpmyadmin 访问实际服务器,从而阻止我们访问 php.ini。我们希望能够继续使用 PDO。
任何想法如何解决这个问题,如果没有
我们如何让这个文件以相同/相似的方式工作但没有 PDO?
Class Database{
protected $_link;
public function __construct(){
$config['db'] = array(
'hostname' => 'localhost', //The provided XXX.loopia.se and 127.0.0.1 has also been attemped here with no result
'dbname' => 'database_name',
'username' => 'user_name',
'password' => 'password'
);
$db = new PDO('mysql:hostname=' . $config['db']['hostname'] .';dbname=' . $config['db']['dbname'], $config['db']['username'], $config['db']['password']);
$this->_link = $db;
}
}
日志输出:
PHP 警告:PDO::__construct() [pdo.--construct]: [2002] 没有这样的文件或 目录(尝试通过 unix:///tmp/mysql.sock 连接)
链接到loopia的“PHP to SQL”-use-this-code:https://support.loopia.se/files/php_till_mysql.zip
【问题讨论】:
-
这可能是因为端口错误。尝试将
;port=/path/to/mysql.sock与您的提供者的真实路径一起传递。如果您不想使用 PDO,请使用mysqli -
参见7php.com/… - 可能就像Brewal 所说的那样,端口
$dbh = new PDO("mysql:host=$hostname:3306;dbname=$dbname", $username, $password);。谷歌错误信息。您会找到其他链接。 -
我现在正在调查 Brewal 的回答和 Fred 的链接。我用谷歌搜索了这条消息,但我发现的只是人们编辑他们的 php.ini 文件或其他我无法访问的本地系统文件。
-
我对我的评论做了一点修改,添加了
$dbh = new PDO("mysql:host=$hostname:3306;dbname=$dbname", $username, $password);作为示例,以防您可能没有看到。