בעיה בחיבור PHP ל MySQL

Mike A

New member
בעיה בחיבור PHP ל MySQL

התקנתי PHP, שרת אינטרנט, ושרת MySQL על המחשב שלי. חלק מהקוד שלי:
$host = "localhost"; $user = "root"; $pass = "mike"; ... $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");​
הקוד כמובן לקוח מהאתר של zend, רק שיניתי את היוזר והססמא בהתאם להגדרות שלי פה. כשאני נכנס לאתר (http://localhost:8080) זאת הודעה השגיאה:
Fatal error: Call to undefined function mysql_connect() in C:\www\index.php on line 16​
שורה 16 זאת השורה האחרונה בקוד ממקודם. מה עשיתי לא נכון?
 

OriIdan

New member
נראה שלא התקנת את הספריה המתאימה

הודעה זו מופיעה כאשר לא הותקנה ספרית mysql ב PHP בלינוקס שם הספריה הוא mysql.so אם אינני טועה.
 

Mike A

New member
אני על winxp

ופתרתי את הבעיה, פשוט התקנתי PHP4 במקום 5.
 

OriIdan

New member
היית אומר מהתחלה שאתה עם PHP5

בגרסה 5 של PHP הספריה של mysql לא מגיעה יחד עם ההפצה וזו מסיבה של אי תאימות רשיונות, הרשיון של MySQL שונה לאחרונה להיות GPL מלא בעוד הרשיון של PHP הוא רשיון דומה ל BSD. ההבדל העקרוני הוא שכאשר אתה כותב תוכנה עם MySQL שהוא ברשיון GPL התוכנה שלך חייבת גם היא להיות חופשית (אלא אם כן אתה משלם להם על רשיון אחר). לעומת זאת הרשיון של PHP לא מחייב שהתוכנה שאתה כותב תיהיה חופשית. שימו לב גם שכל מי שכותב תוכנה מבוססת MySQL חייבת להיות חופשית (לא בהכרח חינמית, אבל חופשית).
 

OriIdan

New member
פחות או יותר

לגבי MySQL אני יודע בבירור שבעבר הם הפיצו את השרת תחת רשיון GPL ואת הספריות תחת LGPL לאחרונה זה השתנה והספריות גם הן תחת GPL. לגבי PHP לא קראתי את הרשיון בעצמי אבל ממה שהבנתי הרשיון הוא תואם BSD אם לא BSD ממש.
 

Jonatan 44

New member
עכשיו כשאני חושב על זה

זה די בילתי אפשרי, כי PHP משתמשת בספריות של MySQL, וזה בסדר כי PHP היא OPen-Source, לעומת זאות, PHP גם משתמשת ברכיבים סגורים כגון IIS, רכיבים של Win32, שסגורים, ככה שנוצרת שרשרת ביניהם, זה לא יוצר בעייה?
 

OriIdan

New member
לא בדיוק

עד כמה שאני יודע PHP בחלונות עושה שימוש בקריאות לפונקציות שיושבות ב DLL וזה מותר, כי אין רשיון למיטב ידיעתי שאומר לאיזה תוכנות מותר לקרוא להן ולאיזה לא. לגבי MySQL הבעיה היא שמאחר ולפי הרשיון של PHP מותר לקחת אותו וליצור ממנו מוצר סגור אז אי אפשר להכניס במוצר הסגור את MySQL ולכן חוסר התאימות (למיטב הבנתי). בכל מקרה עוד אנקדוטה מעניינת, הרווחים של חברת MySQL AB שכתבה את MySQL עלו מהרגע שהם שינו את הרשיון מה שמראה יפה על כמה רווח יש בקוד פתוח.
 

יולו

New member
חוץ מזה אני ממליץ לך..

ב or die ב MySQL תכתוב לו
or die(mysql_error());​
 
למעלה