質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

171閲覧

Centos7上のPostgreSQLにPHPを使ってブラウザから接続したい

yamada93

総合スコア1

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2024/03/31 08:24

実現したいこと

Virtualbox仮想マシンのCentos7上にインストールしたPostgre13に接続したいです。

発生している問題・分からないこと

Postgreインストール後、ソースコードをCentosのhtmlフォルダ内に格納し、接続を試したが、エラーメッセージが表示される。

エラーメッセージ

error

1Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5432? in /var/www/html/testconnect.php on line 7 2 3Warning: pg_last_error(): No PostgreSQL link opened yet in /var/www/html/testconnect.php on line 9 4接続失敗です:

該当のソースコード

test.php

1<html> 2<head><title>PHP TEST</title></head> 3<body> 4 5<?php 6 7$conn = pg_connect("host=127.0.0.1 dbname=testdb port=5432 user=[username] password=[password]"); 8if (!$conn) { 9 die('接続失敗です: ' . pg_last_error()); 10} 11 12 13echo '接続に成功しました。<br>'; 14 15// ここに PostgreSQL に対する操作を記述します。 16 17// 接続を閉じる 18$close_flag = pg_close($conn); 19if ($close_flag){ 20 echo '切断に成功しました。<br>'; 21} 22 23 24?> 25</body> 26</html>

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

・firewallの設定で5432ポートを開放
コマンド:firewall-cmd --permanent --add-port=5432/tcp
・Postgresql.confを修正し、listen_addresses = ‘*’を追記
#port=5432の#を削除
・pg_hba.confを修正し、最下行に以下を入力
host all all [自分のPCIPアドレス] md5
・自分のPCからはPgadmin4で接続できています。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mike2mike4

2024/03/31 13:46

PHPはサーバー側で動くので、ブラウザ側という表現はおかしいのでは?
yamada93

2024/04/03 03:40

確かに変ですね!!自分のpcのpgadminからはアクセスできていたので表現が難しく、、なんとお伝えすれば正確でしょうか???
mike2mike4

2024/04/03 04:01

「Virtualbox仮想マシン上にインストールしたPostgreSQL13に接続できない」 がまだマシかと。 それはともかく、解決して良かったですね。SELinux実運用でも使わないことが結構あると聞いているので、権限がしっかりしていればいいかと思います。
guest

回答1

0

自己解決

解決しました。やったこと。
SELinuxをオフにしたら接続できました。
コマンドは以下の通り。
getenforce (今のSELinuxの状態確認)
setenforce 0 (一時的な無効化)
vi /etc/selinux/config でconfigファイルに入り
SELINUX=Enforcing を
SELINUX=disabled  に変更することで永続的な無効化
これで上記test.phpを実行すると接続に成功しました。

SELinuxをオフにするのはセキュリティレベルが下がるとのことでしたが、開発機のため、いったんオフにして動かそうと思います。

投稿2024/03/31 14:06

yamada93

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gusachan

2024/04/02 11:39

SELinuxのディレクティブ # setsebool -P httpd_can_network_connect 1 # setsebool -P httpd_can_network_connect_db 1 上記コマンドを実行してはいかがでしょうか。データベース接続を許可できます
yamada93

2024/04/03 03:37

ご教授いただきありがとうございます!早速やってみます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問