PHP i MySQL nie komunikują się

9

Doszedłem do wniosku, że moja instalacja PHP i moja MySQL nie dają sobie rady; Pracuję nad stworzeniem mojej pierwszej strony internetowej, która używa MySQL do treści, ale po dwóch dniach, stronach podręcznika, dokumentacji online i dziesiątkach samouczków, po prostu nie mogę uruchomić części PHP / MySQL. Mam ustanowiony domowy serwer internetowy (jestem jedynym administratorem / użytkownikiem), który obsługuje Apache i hostuje moje strony internetowe. Mam zainstalowany MySQL i mogłem utworzyć bazę danych i wysłać zapytanie do niej przez Terminal. Mam zainstalowany PHP i mogę używać echa do drukowania tekstu na dokumencie. Kiedy jednak pracuję z MySQL, wszystko się zmienia…

Mam stronę zawierającą elementy inicjujące. zawiera kilka akapitów zakodowanego na stałe kodu HTML, a następnie kod PHP umożliwiający dostęp do MySQL. Kiedy po raz pierwszy załadowałem stronę, wszystko to skutkowało pustą stroną. Skomentowałem sekcję PHP i załadowałem ponownie, aby potwierdzić, że zwykły HTML nadal działa, co zadziałało. Dlatego część PHP nie pozwalała na ładowanie żadnej strony.

Aby rozpocząć rozwiązywanie problemów z moim kodem, zostawiłem cały komentarz PHP z wyjątkiem następującego kodu dla połączenia z serwerem, który jest dostosowany z kilku różnych samouczków:

<?
echo("<p>PHP is working</p>"); 
$ses = mysql_connect("localhost","username","password");
if(!$ses){
 echo("<p>Connection to content server failed.</p>");
 exit();
}
echo("<p>Database Connected</p>");
?>

Po załadowaniu strony ładuje się początkowy kod HTML oprócz akapitu z napisem „PHP działa”, ale nie pojawia się komunikat o błędzie ani o powodzeniu. Usunąłem strukturę If z kodu - aby pozostały tylko dwa echa i mysql_connect - i uzyskałem ten sam wynik.

Wygląda na to, że funkcja mysql_connect powoduje, że serwer przestaje ładować kod po uruchomieniu, ale nie mam pomysłów, jak to naprawić. Dla przypomnienia: zmodyfikowałem plik php.ini, aby zawierał wiersz „connection = msql.so”, i używam MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04. Ponadto zarówno mój router, jak i modem zostały skonfigurowane do przekazywania portu 3306 na serwer - chociaż nie widzę, jak to powinno być konieczne - a moja nazwa użytkownika i hasło MySQL zostały potrojone i są identyczne z tymi, których używam z powodzeniem w terminalu.

czego mi brakuje?

Casey Hungler
źródło
1
Zamień „nazwę użytkownika” i hasło na poprawną nazwę użytkownika (prawdopodobnie root) i hasło
Tachyons
2
Tak, zrobiłem to. Po prostu nie sądziłem, że dobrym pomysłem byłoby wyrzucenie nazwy użytkownika i hasła na forum. Jak powiedziałem na końcu, WIELE razy sprawdziłem nazwę użytkownika i hasło, aby upewnić się, że są one zgodne z tym, czego używam do pomyślnego tworzenia, uzyskiwania dostępu i edytowania bazy danych przez Terminal.
Casey Hungler 24.12.12
Próbowałem również zastąpić localhost 127.0.0.1, a także lokalnymi i globalnymi adresami IP serwera, ale żaden z nich też nie zrobił różnicy.
Casey Hungler 24.12.12
1
Czy zainstalowałeś php5-mysql?
laurent
Jestem całkiem pewien, ale spróbuję jeszcze raz.
Casey Hungler 24.12.12

Odpowiedzi:

9

Wszystko wygląda OK, więc myślę, że twoja instalacja nie została ukończona. Aby mysql i php mogły się komunikować, musisz zainstalować php5-mysql pakiet:

sudo apt-get install php5-mysql
Laurent
źródło
NB: Musiałem ponownie uruchomić komputer, zanim to zadziała.
user124384,
3

Zainstaluj php5-mysqlpakiet i użyj mysqli_connect zamiast mysql_connect

Tachyony
źródło
Dzięki, ktoś inny też to zasugerował i zadziałało! Jestem ciekawy, że podczas moich poszukiwań natknąłem się na rzeczy dotyczące mysqli (i PDO zwykle tam też było), co to jest? Co sprawia, że ​​jest lepszy niż zwykły mysql?
Casey Hungler,
MySQLi to ulepszona wersja.
sowa
Z tego co wiem, powinieneś używać mysqli, ponieważ jest to zalecane przez zespół php, a mysql_connect nie jest już rozwijany, a jedynie konserwacja. Myślę, że mysql_connect nie akceptuje na przykład przygotowanych instrukcji i wielu innych rzeczy.
laurent
1
sudo apt-get install php5-mysql

Znajdź wersję Tomcat od /etc/init.d/. Powinien istnieć plik o nazwie tomcat7, stąd wersja 7

sudo service tomcat7 stop 
sudo service tomcat7 start

Czasami ponowne uruchomienie komputera pomaga w sortowaniu innych problemów. Po ponownym uruchomieniu nie zapomnij uruchomić:

sudo service tomcat7 start 
użytkownik144880
źródło