अपरिभाषित फ़ंक्शन mysql_connect () [php]


Answers

मैं देख रहा हूँ कि आपने इसे उबुंटू के साथ टैग किया है सबसे अधिक संभावना MySQL ड्राइवर (और संभवतः MySQL) स्थापित नहीं है यह मानते हुए कि आपके पास SSH या टर्मिनल एक्सेस और सूडो अनुमतियां हैं, सर्वर में प्रवेश करें और इसे चलाएं:

sudo apt-get install mysql-server mysql-client php5-mysql

यदि MySQL संकुल या php5-mysql पैकेज पहले ही इंस्टॉल किए गए हैं, तो यह उन्हें अद्यतन करेगा।

अद्यतन करें

चूंकि यह जवाब अभी भी कभी-कभी क्लिक हो जाता है मैं इसे PHP 7 को शामिल करने के लिए अद्यतन करने जा रहा हूँ। PHP 7 को MySQL के लिए एक अलग पैकेज की आवश्यकता है, ताकि आप apt-get कमांड के लिए एक अलग तर्क का उपयोग करना चाहें।

sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql

और महत्वपूर्ण बात, mysql_connect() को PHP v5.5.0 के बाद से पदावनत किया गया है। यहां आधिकारिक दस्तावेज देखें: PHP: mysql_connect ()

Question

मैंने aptitude install php5-mysql (और MySQL / Apache 2 को पुनरारंभ), लेकिन मुझे अभी भी यह त्रुटि मिल रही है:

घातक त्रुटि: अपरिभाषित फ़ंक्शन mysql_connect () में कॉल करें /home/validate.php में लाइन 21 पर

phpinfo() कहना है कि /etc/php5/apache2/conf.d/pdo_mysql.ini फ़ाइल को पार्स किया गया है।




यदि आप पहले ही PHP7 का उपयोग कर रहे हैं, तो पूर्व में बहिष्कृत कार्य mysql_* को पूरी तरह से हटा दिया गया था, इसलिए आपको अपने कोड को पीडीओ-फ़ंक्शंस या mysqli_* फ़ंक्शंस का उपयोग करके अपडेट करना चाहिए।

यदि यह संभव नहीं है, तो एक वैकल्पिक हल के रूप में मैंने एक छोटी सी फाइल बनाई, जो कि mysqli_*() -functions के साथ पुराने फ़ंक्शन को पुन: बनाता है : fix_mysql.inc.php




मेरा अनुमान है कि आपकी PHP स्थापना MySQL समर्थन से संकलित नहीं हुई थी

अपने कॉन्फ़िगर कमांड ( php -i | grep mysql ) की जांच करें आपको '--with-mysql=shared,/usr' जैसी कुछ दिखाई देनी चाहिए

आप http://php.net/manual/en/mysql.installation.php पर पूर्ण निर्देशों की जांच कर सकते हैं। हालांकि, मैं @वानवाकिक द्वारा प्रस्तावित समाधान के साथ जाना चाहता हूं।

फिर भी, मुझे लगता है कि आपको पीडीओ का उपयोग करने के लिए MySQL समर्थन चाहिए।




सवाल extension=mysqli.dll साथ टैग किया गया है, लेकिन extension=mysqli.dll टिप्पणी extension=mysqli.dll खिड़कियों के लिए विशिष्ट है। मैं यहाँ उलझन में हूँ?!, वैसे भी, पहली बात <? php phpinfo ?> <? php phpinfo ?> और mysql* के लिए Configuration शीर्षक के अंतर्गत खोजें। यदि आपको ऐसी कोई चीज नहीं दिखाई देती है तो आप ने php-mysql या php-mysql स्थापित या सक्षम नहीं किया है तो पहले php-mysql स्थापित करें

sudo apt get install php-mysql

यह आज्ञा php-mysql आपके द्वारा पहले से स्थापित किए गए php आधार पर स्थापित करेगा, इसलिए संस्करण के बारे में कोई चिंता नहीं है!

फिर यूनिक्स विशिष्ट समाधान आता है, php.ini फ़ाइल में लाइन पर टिप्पणी न करें

extension=msql.so

सत्यापित करें कि msql.so /usr/lib/php/<timestamp_folder> , ELSE

extension=path/to/msql.so

फिर अंततः apache और Configrations सेवाओं को पुनरारंभ करें, और अब आप phpinfo page में हेडिंग Configrations तहत mysql अनुभाग देख सकते हैं




मुझे यह त्रुटि मिल रही है क्योंकि जिस प्रोजेक्ट पर मैं काम कर रहा था वह PHP 5.6 पर विकसित हुआ था और इंस्टॉल करने के बाद, परियोजना php7.1 पर चलने में असमर्थ थी।

बस एनगेंक्स डायरेक्टरी (/ etc / nginx /) में उबंटू / एनजीएनएक्स के साथ वार्जंट का उपयोग करने वाले किसी भी व्यक्ति के लिए, "साइट-उपलब्ध" नामक एक निर्देशिका है जिसमें यूआरएल जैसे नामित फाइल शामिल है जो वांग्रेट मैस्चिन के लिए कॉन्फ़िगर की गई है। मेरे मामले में होमस्टेड.एप था। इस फाइल के भीतर एक लाइन है जो कुछ ऐसा कहती है

    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

वहां आप उस विशिष्ट साइट के लिए इच्छित फ़ैशन संस्करण को बदल सकते हैं।

यह गुगल, लेकिन वास्तव में एक सरल जवाब खोजने में सक्षम नहीं था जिसने कहा था कि कहां और कहाँ क्या बदलना है।

आशा है कि यह किसी को भी मदद करता है धन्यवाद।




चरण 1: अपाचे कंट्रोल पैनल पर जाएं> अपाचे> कॉन्फ़िगर> PHP.ini

चरण 2: नोटपैड (Ctrl + F) में खोजें: extension_dir = "" इस रेखा को इस प्रकार से बदलें: extension_dir = "C: \ php \ ext"

चरण 3: के लिए खोजें: एक्सटेंशन = php_mysql.dll और निकालें ; भीख माँग में

चरण 4: अपाचे कंट्रोल पैनल को सहेजें और पुनरारंभ करें

बस :)