2011-05-23 14 views
7

साथ त्रुटि मैं सिर्फ एक PHP परियोजना के लिए WAMP उपयोग शुरू कर दिया है और मैं कोड की इस पंक्ति के साथ संबंधित अगले त्रुटियों मिलती है:"डेटा के समय से पहले अंत" पीएचपी

$link=mysql_connect("localhost","myuser","mypas"); 

मैंने पढ़ा है कि मैं करना पड़ा मेरे पुराने पासवर्ड के साथ फिर से सेट पासवर्ड, लेकिन यह अभी भी सभी सेवाओं को पुनरारंभ करने के बाद काम नहीं करता है। मैं PHP 5.3.4 और MySQL 5.1.53 का उपयोग कर रहा हूँ कोई मदद? धन्यवाद

Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in C:\wamp\www\CDE\includes\baseDatos.php on line 5 
Call Stack 
1 0.0002 667312 {main}() ..\index.php:0 
2 0.0008 682416 include('C:\wamp\www\CDE\includes\seguridad.php') ..\index.php:2 
3 0.0010 690984 include('C:\wamp\www\CDE\includes\baseDatos.php') ..\seguridad.php:2 
4 0.0014 692368 mysql_connect () ..\baseDatos.php:5 

(!) Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in C:\wamp\www\CDE\includes\baseDatos.php on line 5 
Call Stack 
1 0.0002 667312 {main}() ..\index.php:0 
2 0.0008 682416 include('C:\wamp\www\CDE\includes\seguridad.php') ..\index.php:2 
3 0.0010 690984 include('C:\wamp\www\CDE\includes\baseDatos.php') ..\seguridad.php:2 
4 0.0014 692368 mysql_connect () ..\baseDatos.php:5 

(!) Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file in C:\wamp\www\CDE\includes\baseDatos.php on line 5 
Call Stack 
1 0.0002 667312 {main}() ..\index.php:0 
2 0.0008 682416 include('C:\wamp\www\CDE\includes\seguridad.php') ..\index.php:2 
3 0.0010 690984 include('C:\wamp\www\CDE\includes\baseDatos.php') ..\seguridad.php:2 
4 0.0014 692368 mysql_connect () ..\baseDatos.php:5 
+0

'http पर baseDatos.php' का कोड पेस्ट कृपया इस

प्रयास करें: // www.ideone.com' और यहाँ लिंक। – diEcho

+0

शायद यह भी देखें [विंडोज 7 PHP MySQL कनेक्शन मुद्दे] (http://stackoverflow.com/questions/4807072/windows-7-php-mysql-connection-issues)। –

+0

baseDatos.php इस जानकारी के साथ सिर्फ "फ़ाइल शामिल करें" है: http://www.ideone.com/pOvt9। अगर यह मदद करता है, mysql.user से चयन पासवर्ड कर रहा हूं तो मुझे मूल "mypas" के बजाय 16 बाइट्स पासवर्ड मिलता है। – Arturo

उत्तर

5

मैं एक ही समस्या थी और इस तरह एक अद्यतन क्वेरी का उपयोग कर यह तय:

UPDATE mysql.user SET Password = PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user'; 

क्यों, लेकिन सेट पासवर्ड काम नहीं किया पता नहीं है।

SELECT 
`user`.`Password` 
FROM 
`user` 
WHERE 
`user`.`User` = 'youruser' AND 
`user`.`Host` = 'yourhost' 

अगर पासवर्ड एक साथ शुरू नहीं करता * समस्या आप अभी भी है कि है:

सुनिश्चित करें कि समस्या एक मुझे लगता है कि आप mysql डेटाबेस पर इस क्वेरी करना चाहिए है होना करने के लिए

function mysql_41_password($in) 
{ 
$p=sha1($in,true); 
$p=sha1($p); 
return "*".strtoupper($p); 
} 

Thene आप पासवर्ड सेट कर सकते हैं: वर्ष encription

संपादित करें _ यहाँ एक php समारोह MySQL के लिए मान्य पासवर्ड बनाने के लिए (here से लिया गया) है मैन्युअल रूप से:

//newpwd is the passowr dgenerated in php 
UPDATE mysql.user SET Password = 'newpwd' WHERE Host = 'some_host' AND User = 'some_user'; 
FLUSH PRIVILEGES; 
+0

मैंने ऐसा किया और मेरा पासवर्ड 038872231aa1b123 है। मैं नए एन्क्रिप्शन में कैसे बदलूं? धन्यवाद – Arturo

+0

क्या आप सुनिश्चित हैं कि आपके पास अपनी आईएनआई फ़ाइल में पुराने पासवर्ड की तरह कुछ नहीं है? –

+0

बहुत यकीन है, मैंने परिणामों के बिना my.ini और php.ini पर खोज की है ... – Arturo

0

कि आप स्थानीयहोस्ट से कनेक्ट कर रहे हैं, यह बताता है कि आपके पास नेटवर्क समस्याएं नहीं हैं।

First hit in Google 2 संभावित कारण/उपचार सूचीबद्ध करता है।

यह संदेश प्रकट होता है जब एक पीएचपी 5.3 उपयोग कर रहा है ... MySQL डेटाबेस है कि PHP 5.2 के साथ इस्तेमाल किया जा करने का इरादा है साथ ... मैंने देखा है कि जब मैं वर्दी सर्वर का एक और संस्करण हो गया।

यदि आपके पास डेटाबेस तक पहुंच नहीं है और मुख्य रूप से विकास उद्देश्यों (मेरे जैसे) के लिए इस दूरस्थ कनेक्शन का उपयोग कर रहे हैं तो इसका समाधान दोनों PHP संस्करणों (वर्तमान में PHP 5.2 के साथ नवीनतम वर्दी सर्वर) के साथ कॉन्फ़िगरेशन है। .. 5.2.23 के साथ 5.6 बी-नैनो प्रतीत होता है)।

+2

मैंने कोशिश की लेकिन मेरे पास "my.cnf" फ़ाइल नहीं है। बस एक "my.ini" और इसमें कोई "old_passwords" पंक्ति नहीं है। – Arturo

4

उपरोक्त समस्या PHP और MySQL के बीच संस्करण में संगतता के कारण होती है। ज्यादातर डीबी की रिमोट पहुंच के दौरान हो सकता है।

कृपया अपने PHP और MySQL संस्करणों की जांच करें।

मेरे संस्करण PHP-5.3.6 (स्थानीय मशीन) और MySQL 5.1.56 (लाइव डीबी) हैं।

मेरा MySQL लाइव डोमेन में रखा गया है और मैंने अपनी PHP फ़ाइलों को स्थानीय मशीन में रखा है। मुझे एक ही पासवर्ड आराम की समस्या का सामना करना पड़ा।

फिर मैं अपने एक्सएएमपीपी को पुराने संस्करण के साथ बदलता हूं, यह मेरे PHP संस्करण को 5.3.0 में बदल देता है। अब उपर्युक्त समस्या हल हो गई थी और मैं स्थानीय से लाइव डीबी तक पहुंचने में सक्षम हूं।

0

यदि MySQL 4 का उपयोग कर रहे हैं।1 + MySQL कमांड लाइन

mysql> set old_passwords = 0; mysql> set password for 'user'@'some.host.domain' = PASSWORD('new_pass'); mysql> set old_passwords = 1;

संबंधित मुद्दे