2011-09-07 2 views
0

원격 SQL Server에 연결하는 PHP 스크립트가 있습니다. 루트 권한으로 명령 줄에서 freetds 명령을 호출 할 수 있습니다 : tsql -H hostname -U username 그리고 위대한 연결 만하고 쿼리를 실행할 수 있습니다.PHP에서 Freetds SQL Server 연결 오류 : 사용 권한이 필요합니까?

나는 /var/www/html/axis/public/test.php 에서 PHP 스크립트가있을 때 I : sudo는 -u 아파치 -s (아파치 루트에서 사용자를 변경) 다음에서 내 PHP 스크립트를 실행 커맨드 라인, 그것은 연결하고 훌륭한 쿼리를 실행합니다. 그러나 웹 브라우저에서 동일한 스크립트를 실행할 때 브라우저가 DB 연결 오류를 반환합니다. 웹 브라우저는 SQL 연결이 필요없는 모든 웹 페이지를 렌더링하고 렌더링하는 모든 곳을 연결할 수 있습니다.

아파치는 httpd를 실행하는 사용자입니다. 나는 이것을 통해 확인했다 : ps aux | grep apache

apache가 명령 줄에서 PHP 스크립트를 제대로 실행할 수 있지만 브라우저가 매우 동일한 스크립트에 연결하려고 시도하는 이유에 대한 아이디어는 없습니까?

감사합니다, 데릭 FreeTDS를 자주 묻는 질문 사항에 따라

답변

0

문제는 SELinux 때문이었습니다. 웹 서버는 네트워크 외부에서 SQL Server로 연결하는 것이 금지되었습니다. 모든 것이 잘했다, 그 작업이 완료되자

는/usr/sbin에/setsebool -P httpd_can_network_connect_db 1

:이 명령을 실행했다. 이 답변은 Daniel Fazekas의 도움을 받아 제공되었습니다. 저와 함께이 문제를 검토해 주신 모든 분들께 감사드립니다.

0

:

http://www.freetds.org/faq.html#php

은 또한 당신이 정확히 얻고있는 어떤 오류의 연결 코드를 게시 할 수 있습니까?

+0

그래, 그 중 하나를 읽었습니다. 위에서 언급 한 것처럼, 나는 아파치로 사용자를 변경하고 commmand 라인에서 PHP 스크립트를 실행했다. 브라우저 내에서 동일한 스크립트를 직접 실행하는 것과 같지 않습니까? PHP 스크립트가 아파치로 실행되지만 브라우저에서는 실행되지 않기 때문에 연결 문자열이 중요하지는 않습니다. 그들은 모두 같은 스크립트를 실행하고 있습니다. 오류 : SQLSTATE [HY000] 연결할 수 없음 : Adaptive Server를 사용할 수 없거나 존재하지 않습니다 (심각도 9) – Derrick