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