2012-02-09 3 views
2

이 있습니다. 지금 내 셀을 괴롭히는 문제가 있습니다.PHP는 연결할 수 없지만 SqlPlus는

연결할 오라클 서버가 있습니다. sqlplus 명령 줄을 사용하여 쉽게 연결할 수 있습니다.

PHP로 오라클 데이터베이스에 연결하려고하면 실패합니다. 여기 잡기가 있습니다. 우리는 다른 데이터 센터에서 동일한 설정을했습니다. PHP 시스템이 oracle 데이터베이스에 연결하려고합니다. 나는 똑같은 코드를 실행했고 두 PHP 머신 모두에서 PHP를 동일하게 구성했습니다.

PHP1은 sqlplus와 php를 통해 Oracle1에 연결할 수 있습니다.

PHP2는 sqlplus를 사용하여 Oracle2에 연결하지만 PHP에서는 연결하지 않습니다.

방화벽과 일부 포트 차단이 진행 중입니다. 현재 나의 설명은 php2 포트가 oracle2에 연결하는 데 사용 중이며 기본값 1521이 아니며 차단 중입니다.

내가 가져 오라 오류는 다음과 같습니다

ORA-06413 : 연결 열리지 않습니다.

아이디어가 있으십니까? [정보 제공에서

+1

포트가 1521이 아닌지 알고 계십니까? SQL * Plus가 사용하고있는 연결 세부 정보를 볼 수 있습니까? 별칭을 사용한다면'tnsnames.ora'에? 한 클라이언트가 연결할 수 있고 다른 클라이언트가 연결할 수없는 경우 네트워크 또는 방화벽 문제 일 가능성은 거의 없습니다. 두 연결이 동일한 클라이언트 컴퓨터에서 시도되고 있다고 가정합니다. 사실입니까? –

+0

두 컴퓨터에서 PHP를 동일하게 구성한 경우 다른 포트를 사용하여 연결하는 이유는 무엇입니까? 그랬다면, 당신이 그것들을 동일하게 구성하지 않았다고 말할 수 있습니다 ... – Svish

답변

1

오류는 TNS 연결 설명자가 여러 가지 이유로 인해 구문 분석 될 수 없음을 나타냅니다. 일반적으로 오라클이 연결 정보를 작성하려고 할 때 시스템 호출에 문제가 있습니다.

프로그램 이름, 사용자 이름 또는 컴퓨터 이름에 괄호가 있습니까?

우연히 64 비트 Windows OS에서 32 비트 Oracle 클라이언트를 실행하고 있습니까?

명령 줄에서 tnsping 유틸리티를 사용해보십시오. 그게 당신에게 무엇을 말합니까?

+0

PHP는 C : \ Program Files (x86) \ PHP 경로에 있습니다. 내가해야만하는 것은 괄호가없는 경로에 넣는 것뿐입니다. (C : \ PHP) –

0

, 내 추측 (프로그래밍 원인으로 좁아가) 문제의 컴퓨터에서 전송 된 데이터베이스 이름, 사용자 이름 또는 암호 중 하나는 이스케이프 시퀀스가 ​​포함되어 있다는 점이다 ($, \t, \a, \r 등) PHP 스크립트에서 문자열 리터럴로 입력하면 변경됩니다.

+0

나는 원래 그것도 PHP2와 PHP1의 연결 문자열이 동일하게 작성되었다고 생각했습니다. '10 .10.10.10 : 1521/databaseName ' –

+0

이스케이프 시퀀스가없고 코드가 다른 경우 네트워킹/설정 문제 일 수 있습니다. 이 serverfault 마이그레이션해야 할 수 있습니다. 감사합니다 webbiedave – webbiedave

+0

. 어쩌면 중재자가 나를 위해 그것을 할 것입니다. –

관련 문제