Я установил php на новый сервер Ubuntu 18.04 для Postgres, и у меня проблема с php. Вот мои шаги установки php 7.3:
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php]
sudo systemctl restart apache2
После установки PHP 7.3 я установил pgsql.
sudo apt install php-pgsql
sudo service apache2 reload
Затем я отредактировал файл php.ini в /etc/php/7.3/apache2 и удалил точки с запятой из следующих строк:
extension=pdo_pgsql
extension=pgsql
Я сохранил файл и сделал sudo systemctl перезапустите apache2.
Наконец я включил модули:
sudo phpenmod -v 7.3 pgsql
sudo phpenmod -v 7.3 pdo_pgsql
sudo systemctl restart apache2
Затем я создал скрипт для использования pdo для входа в мою базу данных Postgres (учетные данные для входа здесь заменяются значениями-заполнителями.)
<?php
$params = [
'host' => '[IP Address]',
'user' => '[username]',
'pwd' => '[password]',
'db' => '[dbname]'
];
$dsn = sprintf('pgsql:host=%s;dbname=%s;user=%s;password=%s',
$params['host'],
$params['db'],
$params['user'],
$params['pwd']);
try {
$dsn = sprintf('pgsql:host=%s;dbname=%s;unix_socket=%s',
$params['host'], $params['db'], $params['sock']);
$opts = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
$pdo = new PDO($dsn, $params['user'], $params['pwd'], $opts);
} catch (PDOException $e) {
echo $e->getMessage();
} catch (Throwable $e) {
echo $e->getMessage();
}
?>
Но консоль разработчика Firefox повторяет: «не удалось найти драйвер».
Одна подсказка в том, что php 7.3 находится в / etc / apache2 / mods-available, но не в / etc / apache2 / mods-enabled, что говорит о том, что он не включен. Но когда я пытаюсь использовать phpenmod -v 7.3 php7.3.conf, я получаю: ПРЕДУПРЕЖДЕНИЕ: ini-файл модуля php7.3.conf не существует в /etc/php/7.3/mods-available.
Я провел много исследований по этому вопросу, и вот шаги, которым нужно следовать. Большая часть этого исследования была посвящена MySQL, но это не должно иметь значения для PDO.
Спасибо за любые идеи о том, почему я получаю сообщение "Не удалось найти драйвер".
UPDATE:
Я создал скрипт для запуска phpinfo ():
<?php
ob_start();
phpinfo();
$info = ob_get_clean();
echo $info;
?>
но возвращает только HTML-код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<style type="text/css">
body {background-color: #fff; color: #222; font-family: sans-serif;}
pre {margin: 0; font-family: monospace;}
a:link {color: #009; text-decoration: none; background-color: #fff;}
a:hover {text-decoration: underline;}
table {border-collapse: collapse; border: 0; width: 934px; box-shadow: 1px 2px 3px #ccc;}
.center {text-align: center;}
.center table {margin: 1em auto; text-align: left;}
.center th {text-align: center !important;}
td, th {border: 1px solid #666; font-size: 75%; vertical-align: baseline; padding: 4px 5px;}
h1 {font-size: 150%;}
h2 {font-size: 125%;}
.p {text-align: left;}
.e {background-color: #ccf; width: 300px; font-weight: bold;}
.h {background-color: #99c; font-weight: bold;}
.v {background-color: #ddd; max-width: 300px; overflow-x: auto; word-wrap: break-word;}
.v i {color: #999;}
img {float: right; bo…
jquery.min.js line 2 > eval:12:21
?
Но это не то, что я ожидал.