우연히 내 친구 xjb도 오늘 이 문제를 겪었기 때문에 문제에 대한 설명과 해결 방법을 기록하기 위해 이 노트를 썼습니다.
문제 설명: 웹 방법을 사용하면 mysql에 연결할 수 있지만 명령줄에서 다음 메시지가 나타납니다.
치명적인 오류: 정의되지 않은 함수 mysql_connect()
환경: Windows 2003, PHP 5.2.0, MYSQL 5.0, Apache 2.0
php.ini에서 php_mysql.dll의 모듈 옵션이 켜져 있습니다. 테스트 스크립트도 매우 간단하며 단지 mysql_conect 함수이며 내용은 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
php.ini:
extension=php_mysql.dll
테스트 내용 script test.php는 다음과 같습니다:
text.php
if ( !mysql_connect(DBHOST, DBUSER,DBPWD) )
{
echo "Connection failed!"; 🎜>exit;
}
echo "연결 성공 !t"
?>
웹 메소드를 사용하여 http://localhost/test.php를 호출합니다. 실행은 정상이며 "연결 성공"이 표시됩니다.
하지만 dos 명령 명령을 사용하여 라인을 통해 d:/php/php.exe test.php를 호출하면 연결이 실패했음을 알 수 있습니다. 정의되지 않은 함수 mysql_connect()
분명히 dos 명령줄 환경에서는 mysql 모듈이 호출되지 않았습니다. 모든 방법을 시도했지만 여전히 해결되지 않았습니다. 나중에 두 환경의 PHP 구성 차이를 확인하기 위해
test.php
코드 복사 코드는 다음과 같습니다.
echo phpinfo()
두 환경에서 phpinfo()를 통해 입력된 php 설정 정보를 주의 깊게 확인한 결과 문제점을 발견했습니다.
웹 모드에서 http://localhost/test.php를 호출하면 해당 설정 파일(php.php. ini) 표시되는 경로는 C:\WINDOWSphp.ini입니다.
DOS COMMAND 명령줄 모드 d:/php/php.exe test.php가 호출되면 해당 구성 파일(php.ini) 경로는 d:phpphp.ini입니다.
c:windows와 d:php 디렉터리 모두에 php.ini 파일이 있습니다. d:php 디렉터리의 php.ini는 Extension=php_mysql.dll 모듈을 열지 않습니다. 그래서 d:phpphp.ini를 삭제하고 c:windowsphp.ini만 남겨두었더니 문제가 해결되었습니다.
요약: Windows에서 PHP를 설치할 때 구성 파일의 혼동을 피하기 위해 설치 디렉터리에 있는 php.ini를 Windows 디렉터리에 복사한 후 원래 설치 디렉터리에 있는 php.ini 파일의 이름을 바꾸거나 삭제해야 합니다. 피하기 이로 인해 다른 환경에서 실행될 때 구성 파일을 찾는 데 불일치가 발생합니다. 일반적으로 문제의 원인은 매우 간단하지만 이를 찾아 문제를 해결하는 과정은 상당히 귀찮습니다.
위 내용은 PHP가 DOS 명령줄에서 MySQL에 연결할 수 없는 문제를 해결하기 위한 일반적인 DOS 명령에 대한 기술 노트를 소개합니다. 여기에는 일반적인 DOS 명령의 내용이 포함되어 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.