2009-10-28 22 views
8

मैं केकपीएचपी के लिए नया हूं और बस कॉन्फ़िगरेशन प्रक्रिया के माध्यम से चल रहा हूं, लेकिन स्टंप हो गया है कि केक मेरे MySQL डेटाबेस तक क्यों नहीं पहुंच सकता है। केक जानकारी पृष्ठ का कहना है कि मेरी टीएमपी निर्देशिका लिखने योग्य है, फ़ाइलइंजिन का उपयोग कैशिंग के लिए किया जा रहा है (यह नहीं पता कि इसका क्या अर्थ है), और मेरी डेटाबेस कॉन्फ़िगरेशन फ़ाइल मौजूद है, लेकिन केकेपीएचपी डेटाबेस से कनेक्ट नहीं हो सकता है।केकपीएचपी: MySQL डेटाबेस तक नहीं पहुंच सकता

यहाँ मेरी सेटअप विवरण हैं:

  • पीएचपी 5.3 (हिमपात तेंदुए पर पहले से इंस्टॉल)
  • MySQL 5.1.40 64-बिट
  • CakePHP 1.2.4.8284

यहाँ मेरे द्वारा किए गए कदम हैं:

  • एक MySQL स्कीम बनाया गया एक बुलाया cake_blog
  • एक MySQL उपयोगकर्ता cake_blog_user
  • बुलाया बनाया पर cake_blog @ स्थानीय होस्ट और cake_blog @% उपयुक्त अनुमतियों
  • कॉपी किया गया database.php.default फ़ाइल database.php को cake_blog_user दी और संपादित डेटाबेस कनेक्शन विवरण के रूप में उचित

यहाँ database.php से प्रासंगिक विन्यास डेटा है:

 
    var $default = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => 'localhost', 
     'login' => 'cake_blog_user', 
     'password' => 'cake_blog_password', 
     'database' => 'cake_blog', 
     'prefix' => '', 
    ); 

मैं कुछ यहाँ याद आ रही है? मुझे यह भी उल्लेख करना चाहिए कि यदि मैं डेटाबेस कनेक्शन का परीक्षण करने से ठीक पहले echo mysql_error(); /cake/libs/view/pages/home.ctp फ़ाइल में डालता हूं, तो प्रदर्शित त्रुटि "ऐसी कोई फ़ाइल या निर्देशिका नहीं है।" मुझे नहीं पता कि यह किस फाइल या निर्देशिका के बारे में बात कर रहा है।

धन्यवाद!

+0

अपने डेटाबेस सेटअप कैसा रहने वाला है, यानि कि क्या मानकों आप आमतौर पर यह करने के लिए कनेक्ट करने के लिए उपयोग होगा? डेटाबेस.एफपी फ़ाइल के विवरण पोस्ट करें। – deceze

+2

मैं एक अंग पर बाहर जाऊंगा और अनुमान लगाऊंगा कि mysql.sock मानक स्थान में नहीं है – nduplessis

+0

इस विशिष्ट मुद्दे का बिल्कुल समाधान नहीं है, लेकिन मुझे मैक पर स्वयं केक विकास करने में बहुत सफलता मिली है (स्वयं- इसमें लैंप-जैसी स्टैक शामिल है)। शायद उस पर एक नज़र डालें। – inkedmn

उत्तर

8

यदि यह सॉकेट है, बस मुझे सही दिशा में इशारा करते हुए निम्नलिखित

pdo_mysql.default_socket=/tmp/mysql.sock 

और

mysql.default_socket = /tmp/mysql.sock 
1

सभी को धन्यवाद प्रतिबिंबित करने के लिए /etc/php.ini संपादित करें। Mysql.sock फ़ाइल को /var/mysql/mysql.sock पर अपने डिफ़ॉल्ट स्थान के बजाय /tmp/mysql.sock पर ले जाया गया है। इसे प्रतिबिंबित करने के लिए php.ini फ़ाइल को संपादित करने से समस्या ठीक हो गई है।

+1

रूप nduplessis नोट्स, आप भी इस समस्या को इस तरह की एक सिमलिंक बनाने के द्वारा हल कर सकते हैं: 'sudo ln -s /tmp/mysql.sock/var/mysql/mysql.sock' (सुनिश्चित करें कि आप' sudo बनाने mkdir/var/mysql/'first!) इस तरह आपको php.ini फ़ाइल को संपादित करने के बारे में चिंता करने की आवश्यकता नहीं है। – Jared

6

मैं तुम्हें भी यह कर मतलब हो सकता है आप database.php फ़ाइल संपादित करने के लिए जब आप उत्पादन सर्वर पर सीधा प्रसारण की जरूरत है निम्नलिखित

<?php 
    public $default = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => 'localhost', 
     'login' => 'cake_blog_user', 
     'password' => 'cake_blog_password', 
     'database' => 'cake_blog', 
     'prefix' => '', 
     'port' => '/tmp/mysql.sock',    
    ) 
?> 

कर सकते हैं विश्वास करते हैं।

+0

हां, यह भी काम करता है। धन्यवाद! – Jared

9

आमतौर पर मुझे इसमें क्या काटता है कि MySQL 'लोकलहोस्ट' के बारे में सोचता है 'यूनिक्स सॉकेट के माध्यम से कनेक्ट करें' और '127.0.0.1' 'टीसीपी पोर्ट के माध्यम से कनेक्ट करें'। XAMPP (कम से कम मैक पर) जैसी चीजों के साथ यूनिक्स सॉकेट फ़ाइल नहीं है। इसके बजाय 127.0.0.1 का उपयोग करें।

var $default = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => '127.0.0.1', 
    'login' => 'cake_blog_user', 
    'password' => 'cake_blog_password', 
    'database' => 'cake_blog', 
    'prefix' => '', 
); 

हर समय काम करना चाहिए।

+1

+1 यह मेरे लिए काम करता है और कम से कम आक्रामक लगता है –

0

अपने phpinfo की जांच करें और सूचीबद्ध सॉकेट का उपयोग करें। वह मेरे लिए काम किया।

0

उबंटू पर, यदि आपने PHP के 7.0 और 5.6 संस्करण दोनों स्थापित किए हैं तो यह काम नहीं करेगा।

देखो पहले 7.0 संस्करण में हैं तो: आदेश php -v है

तुम अगर तुम दोनों संस्करणों है स्विच करना होगा।

अगला

sudo a2dismod php7.0 
sudo a2enmod php5.6 
sudo service apache2 restart 
संबंधित मुद्दे