PHP và MySQL không giao tiếp


9

Tôi đã đi đến kết luận rằng cài đặt PHP và cài đặt MySQL của tôi không hợp nhau; Tôi đang làm việc để tạo trang web đầu tiên sử dụng MySQL cho nội dung, nhưng sau hai ngày, các trang hướng dẫn, tài liệu trực tuyến và hàng tá hướng dẫn, tôi không thể làm cho phần PHP / MySQL hoạt động. Tôi có một máy chủ web gia đình được thiết lập (tôi là quản trị viên / người dùng duy nhất) chạy Apache và lưu trữ các trang web của tôi. Tôi đã cài đặt MySQL và có thể tạo và truy vấn cơ sở dữ liệu thông qua Terminal. Tôi đã cài đặt PHP và có thể sử dụng echo để in văn bản vào tài liệu. Tuy nhiên, khi tôi làm việc với MySQL, mọi thứ thay đổi

Tôi có một trang có chứa các công cụ khởi tạo. chứa một vài đoạn mã hóa HTML và mã PHP để truy cập MySQL. Khi tôi tải trang lần đầu tiên, tất cả kết quả là một trang trống. Tôi đã nhận xét phần PHP và tải lại để xác nhận rằng HTML đơn giản vẫn hoạt động, điều đó đã làm. Do đó, một số phần của PHP đã giữ cho bất kỳ trang nào không tải.

Để bắt đầu khắc phục sự cố mã của tôi, tôi đã để lại tất cả các mã PHP được nhận xét ngoại trừ mã sau đây cho kết nối máy chủ, được điều chỉnh từ một số hướng dẫn khác nhau:

<?
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>");
?>

Khi trang được tải, HTML bắt đầu tải ngoài đoạn văn bản đọc PHP PHP đang hoạt động nhưng không xuất hiện thông báo thất bại hoặc thông báo thành công. Tôi đã loại bỏ cấu trúc If khỏi mã - để chỉ còn lại hai echos và mysql_connect - và nhận được kết quả tương tự.

Có vẻ như tính năng mysql_connect đang khiến máy chủ ngừng tải mã khi nó chạy, nhưng tôi không biết nên sửa nó như thế nào. Đối với bản ghi: Tôi đã sửa đổi tệp php.ini để bao gồm dòng kết nối của máy tính = msql.so, và tôi đang sử dụng MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04. Ngoài ra, cả bộ định tuyến và modem của tôi đã được định cấu hình để chuyển tiếp cổng 3306 đến máy chủ - mặc dù tôi không thấy điều đó là cần thiết - và tên người dùng và mật khẩu MySQL của tôi đã được kiểm tra ba lần và giống hệt với những gì tôi sử dụng thành công trong Terminal.

Tôi đang thiếu gì?


1
Thay thế 'tên người dùng' và mật khẩu bằng tên người dùng chính xác (có thể là root) và mật khẩu
Tachyons

2
Vâng, tôi đã làm điều đó. Tôi chỉ không nghĩ rằng nên ném tên người dùng và mật khẩu lên diễn đàn. Như tôi đã nói ở cuối, tôi đã kiểm tra tên người dùng và mật khẩu NHIỀU lần để đảm bảo rằng nó phù hợp với những gì tôi sử dụng để tạo thành công, truy cập và chỉnh sửa cơ sở dữ liệu thông qua Terminal.
Casey Hungler

Tôi cũng đã thử thay thế localhost bằng 127.0.0.1 cũng như địa chỉ IP cục bộ và toàn cầu của máy chủ, nhưng không ai trong số họ tạo ra sự khác biệt.
Casey Hungler

1
Bạn đã cài đặt php5-mysqlchưa?
nguyệt quế

Tôi khá chắc chắn, nhưng tôi sẽ thử lại.
Casey Hungler

Câu trả lời:


9

Mọi thứ đều ổn nên tôi nghĩ việc cài đặt của bạn chưa hoàn tất. Để mysql và php giao tiếp, bạn cần cài đặt php5-mysql gói:

sudo apt-get install php5-mysql

NB: Tôi đã phải khởi động lại máy tính trước khi nó hoạt động.
dùng124384

3

Cài đặt php5-mysqlgói và sử dụng mysqli_connect thay vì mysql_connect


Cảm ơn, một người khác cũng đề nghị như vậy, và nó đã hoạt động! Mặc dù vậy, tôi tò mò, trong các tìm kiếm của mình, tôi đã tìm thấy nhiều thứ về mysqli (và PDO cũng thường ở đó), đó là gì? Điều gì làm cho nó tốt hơn so với mysql thông thường?
Casey Hungler

MySQLi là phiên bản cải tiến.

Từ những gì tôi biết, bạn nên sử dụng mysqli vì nó được đề xuất bởi nhóm php và mysql_connect không còn trong quá trình phát triển, chỉ bảo trì. Tôi nghĩ mysql_connect không chấp nhận các tuyên bố đã chuẩn bị chẳng hạn và nhiều thứ khác.
nguyệt quế


1
sudo apt-get install php5-mysql

Tìm phiên bản Tomcat từ /etc/init.d/. Cần có một tệp có tên tomcat7, do đó 7 là phiên bản

sudo service tomcat7 stop 
sudo service tomcat7 start

Đôi khi khởi động lại máy giúp sắp xếp các vấn đề khác. Sau khi khởi động lại, đừng quên chạy:

sudo service tomcat7 start 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.