2010-04-14 12 views
0

현재 MySQL과 PHP가 작동하는 웹 사이트가 있습니다. 내 컴퓨터에서 사이트에서 작업 할 수 있도록 WAMPServer 설치를 시도했지만 제대로 작동하도록 사이트를 만들려고 할 때 문제가 발생했습니다.mysql_connect()로 인해 페이지가 표시되지 않음 (WAMP)

HTML 및 PHP 파일이 올바르게 작동합니다 (http://localhost/index.php 등으로 이동). 그러나 일부 페이지에는 "이 웹 페이지를 사용할 수 없습니다."(Chrome) 또는 "Internet Explorer에서이 웹 페이지를 표시 할 수 없습니다"라는 메시지가 표시되어 페이지가 존재하지 않는 것처럼 서버에 오류가 있다고 생각합니다. 일반적으로 '죄송합니다.이 링크가 깨져있는 것 같습니다.'또는 IE의 표준 404 페이지를 보냅니다.

내 사이트의 각 페이지에는 모든 데이터베이스 트랜잭션을 처리 할 클래스의 인스턴스를 설정하는 include() 호출이 있습니다. 이 클래스는 생성자에서 데이터베이스에 대한 연결을 엽니 다. 이 페이지에서 나중에 오류가 발생할 수 있지만 생성자의 내용을 주석으로 처리하여 페이지를로드 할 수 있습니다. 여기에 무슨 일이 일어나고 있는지에 대한 메모로

class dbAccess { 
    private $db; 

    function __construct() { 
     $this->db = mysql_connect("localhost","root","") or die ("Connection for database not found."); 

     mysql_select_db("dbName", $this->db) or die ("Database not selected"); 
    } 
    ... 
} 

:

가 포함 된 파일의 내용입니다. 로컬 컴퓨터가 아닌 내 사이트에서 데이터베이스를 사용하려고합니다. dbName, user 및 password의 실제 값은 내 데이터베이스 소프트웨어 (Navicat Lite)에 플러그인하고 사이트의 최종 버전에서 올바르게 작동 할 때 작동하므로 문제 자체가 그 값과 관련이 있다고 생각하지 않습니다. 일부 설정은 아파치 또는 Wamp. 온라인 내가 솔루션을 검색하려고했습니다

[Wed Apr 14 15:32:54 2010] [notice] Parent: child process exited with status 255 -- Restarting. 
[Wed Apr 14 15:32:54 2010] [notice] Apache/2.2.11 (Win32) PHP/5.3.0 configured -- resuming normal operations 
[Wed Apr 14 15:32:54 2010] [notice] Server built: Dec 10 2008 00:10:06 
[Wed Apr 14 15:32:54 2010] [notice] Parent: Created child process 1756 
[Wed Apr 14 15:32:55 2010] [notice] Child 1756: Child process is running 
[Wed Apr 14 15:32:55 2010] [notice] Child 1756: Acquired the start mutex. 
[Wed Apr 14 15:32:55 2010] [notice] Child 1756: Starting 64 worker threads. 
[Wed Apr 14 15:32:55 2010] [notice] Child 1756: Starting thread to listen on port 80. 

하지만, 도움이 아무것도 찾을 수가 없었다 :

이 사이트에 로그에 하나 개의 시도에 대한 내 아파치 오류 로그의 발췌 한 것입니다. 이 문제를 해결하는 데 도움이되는 추가 정보가 필요하면 언제든지 요청하십시오.

(한 번 더 참고, 난이 컴퓨터에 스카이프를 가지고 있지 않기 때문에이 충돌이 어떤 WAMP 문제에 대한 기본 응답 것으로 보인다 나는 그것이 문제가되는 볼 수 없습니다.)

[편집 : 관련이없는 문제로 해결 되었기 때문에 오류 로그에서 항목이 삭제되었습니다.] [편집 : 내 호스트 설명서를 살펴보면 80 및 443 이외의 모든 포트 (HTTP 및 HTTPS 용)가 차단되어 있음을 알았습니다. 내가 여기에서하려고했던 것과 같은 외부 연결을 허용하지 마라. 로컬 데이터베이스로 변경했지만 여전히 동일한 오류가 발생합니다. 문제는 아직 열려 있습니다.]

+1

PHP가 MySQL 플러그인을 사용하고 있는지 확인 했습니까? 대상 원격 컴퓨터의 MySQL 포트가 기본 포트입니까? 그렇다면 원격 시스템에있는 모든 방화벽을 통해 제대로 전달됩니까? – Dereleased

+0

슈퍼 빠른 답장을 보내 주셔서 감사합니다! Navicat Lite를 사용하여 데이터베이스에 액세스하고 있습니다. 내가 사용하는 연결에 대한 설정은 포트 3306 (기본값이라고 가정하고 있음)을 사용하고 연결이 작동합니다. 나는 이것이 방화벽이 잘되어야한다는 것을 의미한다고 가정하고있다. PHP 확장의 경우 php_mysql과 php_mysqli가 모두 포함되어 있습니다. (Wampserver> PHP> PHP Extensions를 왼쪽 클릭하여 확인했는데 확장 기능이 선택되어 있는지 확인했습니다. Wamp Server 나 Apache에 대한 예외를 만들 필요가 있는지 방화벽 설정을 점검하고 있습니다. – VOIDHand

+1

php.ini에서'error_reporting = E_ALL | E_STRICT','display_errors = On' 및'display_startup_errors = On'을 설정하고'phpinfo()'를 통해 그 값들을 체크 했습니까? ('display_' 옵션은 에러 로그를주의 깊게 살펴봤을 때 꼭 필요한 것은 아닙니다.) – VolkerK

답변

0

잠시 아파치를 우회합시다. 디렉토리 <wamp> /bin/php/php5.3.0에는 cli sapi (명령 행 버전)를 구현하는 php.exe가 있습니다.

콘텐츠로

<?php 
if (!extension_loaded('mysql')) { 
    die('the mysql extension is not present'); 
} 

echo 'phpversion=', phpversion(), "\n"; flush(); 
echo 'client_info=', mysql_get_client_info(), "\n"; flush(); 

$mysql = mysql_connect('localhost', 'root', '') or die(mysql_error()); 
echo "seems to be working\n"; flush(); 

echo 'server_info=', mysql_get_server_info($mysql), "\n"; flush(); 

와 그 디렉토리에 파일 test.php를 넣습니다.그런 다음 디렉토리

c: 
cd c:\wamp\bin\php\php5.3.0 

에 "이동"과 버전이 귀하의 경우 다를 수 있지만

php.exe -f test.php 

그것은 (

phpversion=5.3.2 
client_info=mysqlnd 5.0.7-dev - 091210 - $Revision: 294543 $ 
seems to be working 
server_info=5.1.37 

같은 것을 인쇄해야 실행 명령 셸을 열고)

+0

첫 번째 두 줄은 출력과 함께 나타납니다 :'phpversion = 5.3. 0 client_info = mysqlnd 5.0.5-dev - 081106 - $ Revision : 1.3.2.27 $' – VOIDHand

+0

약간의 시간이 지나면 (약 20 초) 다음 경고 문구가 다양한 형식으로 5 번 반복됩니다.) : 경고 : mysql_connect() : [2002] 연결된 당사자가 C : \ wamp \ bin \에 tcp : // localhost : 3306를 통해 연결을 시도하지 않았기 때문에 연결 시도가 실패했습니다. php \ php5.3.0 \ test.php on line 10 – VOIDHand

+0

MySQL 서버가 실행되지 않는 것처럼 보입니다. – VolkerK

2

나는 또한이 문제를 야기했다. 나를위한 해결책은 mysql_connect 메소드를 클래스에서 옮겨서 직접 호출하는 것이 었습니다.

관련 문제