PHP는 CentOS 7에서 Postgres에 연결할 수 없습니다.

PHP는 CentOS 7에서 Postgres에 연결할 수 없습니다.

Bash를 통해 PHP를 실행하는 데이터베이스에 연결할 수 있습니다.

php -r '$link=@pg_connect("host=fakehost.edu port=5432 dbname=db user=user password=totallynotthepassword");if($link){echo "connected";} else { echo "no dice";}'

그 결과 매우 즐거운 "연결"이 이루어졌습니다.

그러나 Apache에서 제공하는 파일에 똑같은 PHP를 포함하고 해당 페이지로 이동하면 "No dice"라는 매우 슬픈 메시지가 나타납니다.

다음은 PHP 파일의 코드입니다.

<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <?php
$link=@pg_connect("host=fakehost.edu port=5432 dbname=db user=user password=totallynotthepassword");if($link){echo "connected";} else { echo "no dice";}
?>
 </body>
</html>

나는 그것이 Apache 사용자와 관련된 것이라고 생각했지만 방금 그 사용자와 동일한 코드를 테스트했고 연결되었습니다.

답변1

이는 보안 설정인 것으로 보이며 다음을 실행하여 수정할 수 있습니다.

sudo setsebool -P httpd_can_network_connect_db on

여기서 답을 찾았습니다.https://stackoverflow.com/questions/37955681/pg-connect-php-script-works-from-command-line-but-not-from-web-page

관련 정보