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

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

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

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

PHP

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

Q&A

解決済

3回答

8496閲覧

Postgresqlのエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

PostgreSQL

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

PHP

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

0グッド

0クリップ

投稿2018/06/18 02:45

編集2018/06/18 08:12

postgresqlとPHPにて以下のような現象が起きています。

##設定手順について
OS:centOS7にて

Apache2.4.6を導入しました。
POstgresql9.2.23にてデータベース及びテーブルの作成を実施しました。
データベース名=testdb、user=sasaki、password=password
PHP5.4.16を導入しました。
php-pgsqlを導入しました。

/var/www/html/index2.phpに以下のソースを作成し

<?php phpinfo(); ?>

※Apache及びPHPが動作している事を確認しました。

##Apache+PHP+postgresqlの連携
/var/www/html/
index.phpのソース部分を追記しました。記述を以下のようにしていたところ

5 $conn=pg_connect("host=127.0.0.1,port=5432,dbname=testdb,user=sasaki,password=password");

以下のエラーが発生しました。
■エラー1■
Warning: pg_connect():
Unable to connect to PostgreSQL server:
could not translate host name "127.0.0.1," to address:
Name or service not known in /var/www/html/index.php on line 5
database not found

翻訳

警告:pg_connect():
PostgreSQLサーバに接続できません:
ホスト名 "127.0.0.1"を次のアドレスに変換できませんでした:
/var/www/html/index.php 5行目で知られていない名前またはサービス
データベースが見つかりません

##修正手順1
当初はデータベースの接続ができてないと思いましたが
調べるとpg_connect関数のデータベース指定はカンマ区切りではなく
半角スペース区切りだと言うことが調査して分かりました。

index.phpのソース部分の記述を以下のよう変更しました。

5 $conn=pg_connect("host=127.0.0.1 port=5432 dbname=testdb user=sasaki password=password");

以下のエラーが発生しました。
エラー内容が変わりましたので上記エラーは解決したと判断しました。

■エラー2■
Warning: 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/index.php on line 5
database not found

翻訳

警告:pg_connect():
PostgreSQLサーバに接続できません:
サーバーに接続できませんでした:アクセスが拒否されましたサーバーがホスト "127.0.0.1"
ポート5432でTCP / IP接続を受け入れる? /var/www/html/index.php on line 5
データベースが見つかりません

##修正手順2
1./var/lib/pgsql/data/postgresql.confのコメントアウト部分を削除しました。
コメント部分port=5432

port=5432
に修正しました。

2.又、以下のファイルも追記しました。/var/lib/pgsql/data/pg_hba.conf
IPv4 local connections:
host testdb sasaki 127.0.0.1/32 md5

3.ファイアウォールのポートを開放

  firewall-cmd --permanent --add-service=postgresql firewall-cmd --permanent --add-port=5432/tcp firewall-cmd --reload firewall-cmd --list-all   systemctl restart firewalld

としましたが「修正手順1の■エラー2」のエラーまだ発生します。
ここで今の所詰まっています。

ご助言よろしくお願いいたします。



seteonforce=0にすることで解決致しました。
ご回答された方々有難うございました。
また補足ですが
vi /etc/selinux/config

SELINUX=disabled
にする事で再起動しても問題なく起動致しました。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/06/18 02:52

webとdbを同じサーバーで賄っているという前提でいいでしょうか。
退会済みユーザー

退会済みユーザー

2018/06/18 02:53

はいその通りでございます
退会済みユーザー

退会済みユーザー

2018/06/18 02:59

質問文の「host=127.0.0.0.1」は手入力で移し間違ったということでオケ?
退会済みユーザー

退会済みユーザー

2018/06/18 03:00

すいません、写し間違えです
退会済みユーザー

退会済みユーザー

2018/06/18 03:46

getenforce したらどうなる? SELinuxまわりの扱いがわからなければ止めてしまうのも一つの手。
退会済みユーザー

退会済みユーザー

2018/06/18 06:22

getenforce0にすると表示されました。度々すいませんが此れは大事なものと思うのですが根本解決に至りますでしょうか?
退会済みユーザー

退会済みユーザー

2018/06/18 06:56

申し訳ございませんでした。
guest

回答3

0

ベストアンサー

コンソールからpsqlコマンドにて接続できなければ、
そもそもpostgresqlが起動していない説。
postgresql.conf や pg_hba.conf の設定不良で起動できていないとか。
rootユーザーで、systemctl status postgresql-9.6とか実行すれば、
postgresqlが動いているかどうか分かるはず。

psqlコマンドから接続できても
web(php)から接続できない場合は、
クライアント認証周りの設定ミス。
それを確認するのに、
psql -h hostname -d dbname -U user

psql -d dbname -U user
を試して -h なしのときしかつながらないのであれば、
確実にpg_hba.confの設定ミス。
-hオプションの有無が影響ない場合は、
postgresql.confにてlisten_addressesも念のために記述したほうがいいかもしれない。

投稿2018/06/18 02:57

編集2018/06/18 03:45
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/06/18 06:14

#psql -h 127.0.0.1 -d testdb -U sasaki Password for user sasaki:sasakiと入力 psql (9.2.23) Type "help" for help testdb=> と接続は可能でした。 telnetコマンドにて $telnet 127.0.0.1 5432 Trying 127.0.0.1.... Connected to 127.0.0.1 Escape Character is '~]' telnet>quit としてTelnetにて接続も可能でした。
退会済みユーザー

退会済みユーザー

2018/06/18 06:26

setenforce 0 にすると解決致しました。 m6u様有難うございました!
退会済みユーザー

退会済みユーザー

2018/06/18 07:17

インターネット上に露出するサーバーであれば、なるべくはSELinuxを有効にしたほうが良いらしいです。 どう設定していくかについてはネット上に記事がいくつかあるので、興味があればどうぞ。
guest

0

php

15 $conn=pg_connect("host=127.0.0.0.1 port=5432 dbname=testdb user=sasaki password=password");

php

15 $conn=pg_connect("host=127.0.0.1 port=5432 dbname=testdb user=sasaki password=password");

127.0.0.0.1 0. 一個多い

投稿2018/06/18 06:29

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2018/06/18 06:30

私も後で気づきましたがコメントでやりとりされていて「写し間違え」だそうです。
退会済みユーザー

退会済みユーザー

2018/06/18 06:31

普通にソースコードをコピペしてくれればそんなことないのにねぇ…
m.ts10806

2018/06/18 06:33

多いですね。手入力で打ち間違え → 回答者が振り回される
退会済みユーザー

退会済みユーザー

2018/06/18 06:35

ほんとやりとりするたびに問題点が増えて、迷宮入り…笑 めんどくさくなって放置笑
退会済みユーザー

退会済みユーザー

2018/06/18 06:54

すいません。超初心者でHyper-V マネージャー上のLinuxのテキストをコピーする方法が解らなかったもので、手打ち入力していました。お手間かけました。
guest

0

もしかしたらすんごく単純に

php

1$conn=pg_connect("host=127.0.0.0.1 port=5432 dbname=testdb user=sasaki password=password");

php

1$conn=pg_connect("host=127.0.0.1 port=5432 dbname=testdb user=sasaki password=password");

ではないか(IPアドレスの区切りが1個多い)

投稿2018/06/18 06:28

m.ts10806

総合スコア80850

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

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

m.ts10806

2018/06/18 06:28

あ、解決してた。 解決されたようで何よりです。
m.ts10806

2018/06/18 06:29

コメントだけだと全員が全員見るわけではなく、状況が分からないので質問本文を修正して欲しいです。
退会済みユーザー

退会済みユーザー

2018/06/18 06:50

有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問