2012-03-31 12 views
8

मैं PHP पर अपने मैक जो पीएचपी 5.3 यहाँ चल रहा है सक्षम के लिए pdo_odbc विस्तार पाने के लिए कोशिश कर रहा हूँ क्या मैं इसे काम करने के लिए प्राप्त करने की कोशिश करने के लिए किया था:को सक्षम करने पर पीएचपी pdo_odbc विस्तार एक मैक OSX

  1. मैं काढ़ा

    $ brew install unixodbc 
    
  2. पीएचपी 5.3.8 के लिए स्रोत डाउनलोड की गई साथ UnixODBC स्थापित। टर्मिनल में मैंने pdo_odbc फ़ोल्डर में नेविगेट किया। फिर निम्नलिखित किया।

    $ phpize 
    $ ./configure --with-pdo-odbc=unixODBC 
    $ make 
    

    एक त्रुटि हुई।

    /Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c:43: error: ‘ZEND_MOD_END’ undeclared here (not in a function) 
    /Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c: In function ‘zm_startup_pdo_odbc’: 
    /Users/todd/Downloads/php-5.3.8/ext/pdo_odbc/pdo_odbc.c:135: warning: cast to pointer from integer of different size 
    

    कुछ ब्लॉगों के आधार पर मैं {NULL,NUll, NULL} साथ ZEND_MOD_END की जगह ली और फिर से बनाने के भाग गया। इस बार यह पालन किया।

  3. तब मैंने "सुडो इंस्टॉलेशन इंस्टॉल किया" और उसमें एक्सटेंशन को सही जगह पर इंस्टॉल किया। मैं इसे सक्षम करने के लिए php.ini modifed। और यह phpInfo()

अब तक बहुत अच्छा है। लेकिन जब मैं साधारण परीक्षण का प्रदर्शन शुरू हो रहा है जब मैं इस कोड को निष्पादित करने की कोशिश की हर दूसरे के बारे में त्रुटियों, कोशिश

php(20048,0x7fff796f1960) malloc: *** mmap(size=2977160837258543104) failed (error code=12) 
*** error: can't allocate region 
*** set a breakpoint in malloc_error_break to debug 
terminate called throwing an exceptionAbort trap: 6 

यह फेंक दिया गया था मिलती है:

<?php 

    $dsn = 'odbc:Driver={FileMaker ODBC};Server=localhost;Database=CalDAV;'; 
    $pdo = new PDO($dsn, "odbc", "odbc"); 

    $sql = "SELECT * From Users Where id = 2"; 
    $r = $pdo->query($sql); 
    print_r($r->fetch(PDO::FETCH_ASSOC)); 

    $sql = "SELECT * From Users Where id = ?"; 
    $stmt = $pdo->prepare($sql); 
    $stmt->execute(array(2)); 
    print_r($stmt->fetch(PDO::FETCH_ASSOC)); 

?> 

इस लाइन अपवाद का कारण बनता है।

$stmt->execute(array(2)); 

क्या किसी को मैक पर काम करने के लिए pdo_odbc प्राप्त करने का कोई अनुभव है। मैं वास्तव में इस एक्सटेंशन को काम करना चाहता हूं। सुझाव?

+0

सुनिश्चित नहीं है कि कोई ब्रू समकक्ष है लेकिन मैं बस "सुडो पोर्ट स्थापित php5-odbc" चलाता हूं और यह आसानी से स्थापित होता है। – Kevin

+0

ऐसा लगता है कि PDO_ODBC एक्सटेंशन में एक बग है: https://bugs.php.net/bug.php?id=52942 मेरा अनुमान एक स्मृति 'आवंटित करने के लिए एक बुरा' malloc() 'कॉल है जिसे पहले ही आवंटित किया गया है। –

+0

केविन, मैं बहुत यकीन है कि PHP5-ODBC सिर्फ पुराने गैर पीडीओ ODBC विस्तार है हूँ। मैं पीडीओ-ODBC विस्तार पर मैक के लिए जा रहा प्राप्त करने के लिए कोशिश कर रहा हूँ। – toddgeist

उत्तर

0

आप अपने php.ini (या समतुल्य) अगर अपने 'memory_limit' सेटिंग काफी अधिक है यह देखने के लिए जांच की है?

त्रुटि 12 स्मृति थकावट से संबंधित प्रतीत होता है, लेकिन मुझे यकीन नहीं है कि यह आपके द्वारा चलाए जा रहे परीक्षणों में एक रन-लूप लूप से संबंधित है, या बस बहुत अधिक आवंटन। देखें कि एक phpinfo() डंप अपने वर्तमान 'memory_limit' सेटिंग के बारे कहते हैं और फिर इसे ऊपर है कि अगर त्रुटि को सही देखने के लिए।

यह भी देखें:

2

शायद ध्यान देने योग्य बात है कि एप्पल (UnixODBC से अधिक) iODBC मैक ओएस एक्स के लिए चुना है और जगुआर (10.2) के साथ शुरू में यह बंडल लायक। आप latest update from the iodbc.org site मिलना चाहिए, क्योंकि एप्पल आधिकारिक परियोजना पैच के साथ कभी नहीं रखा गया है। मैं दोनों व्यवस्थाएं और इस तरह के इंस्टॉल करने की अनुशंसा, और एप्पल-बंडल हेडर और dylibs को अलग पैच लागू करने।

विगत malloc UnixODBC के साथ जुड़े मुद्दों iODBC के लिए स्थानांतरण के द्वारा हल किया गया है। मुझे नहीं पता कि यह आपके लिए मामला होगा, लेकिन ऐसा करने के लिए यह एक छोटा सा निवेश लगता है।

(ObDisclaimer: मैं OpenLink Software के लिए काम, हम को बनाए रखने और iODBC परियोजना का समर्थन मैं व्यक्तिगत रूप से अपने इस विकल्प का पीछा से कुछ भी नहीं प्राप्त करें।।)

-2

मैं अपने मैकबुक पर उबंटू सर्वर डिस्ट्रो के साथ वर्चुअलबॉक्स का उपयोग कर रहा हूं।

चूंकि मैंने देखा है कि एक ओएसएक्स अपडेट आपकी कॉन्फ़िगरेशन को बर्बाद कर सकता है।

  • VirtualBox के (20GB वीडीआई)
  • उबंटू लिनक्स सर्वर (एक मेजबान केवल एडाप्टर के साथ)
  • LAMP (अपाचे, MySQL & पीएचपी)
  • सांबा (मेरे वेब परियोजनाओं का प्रबंधन करने के लिए)

विकास के लिए अच्छा काम करता है और आप के बारे में निर्भरता ठीक से मोड़ा जा रहा है चिंता करने की जरूरत नहीं है!

0

मैं व्यक्तिगत रूप से, MacPorts पसंद करते हैं, हालांकि मुझे लगता है कि सबसे लोगों फिंक पसंद करते हैं। सबसे आसान तरीका है OSX के लिए मानक यूनिक्स संकुल की अधिक सुविधा-पूरा संस्करण प्राप्त करने के लिए या तो MacPorts या फिंक उपयोग करने के लिए है।

Locate the php.ini file on your Mac (/etc/php.ini) 
Replace all instances of /var/mysql/mysql.sock to /tmp/mysql.sock 
Save the file and restart Apache. 

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

  • कोई संबंधित समस्या नहीं^_^