2016-01-19 3 views
5

के साथ एमएस एसक्यूएल से कनेक्ट है जो हासिल करने का मेरा मतलब बहुत आसान है। मैं एक सुरक्षित कनेक्शन पर एक PHP स्क्रिप्ट से बाहरी एमएस एसक्यूएल डेटाबेस से कनेक्ट करना चाहता हूं। हालांकि यह समस्याग्रस्त साबित हुआ है और, अब तक अनुसंधान में तीन घंटे लगाए गए हैं, मुझे नुकसान हुआ है।PHP एसएसएल

क्लाइंट के लिए मंच उबंटू है, जिसका अर्थ है कि मैं SQLSRV का उपयोग नहीं कर सकता। सुरक्षित कनेक्शन का परीक्षण विभिन्न ग्राहकों के साथ किया गया है और यह ठीक काम करता है। मैं वर्तमान में डेटाबेस से कनेक्ट करने के लिए पीडीओ और डीबीलिब का उपयोग कर रहा हूं, जो ठीक काम करता है।

मैं एक सुरक्षित कनेक्शन को मजबूर करने के लिए कोई विधि नहीं ढूंढ पाया। मैंने कोई अन्य लाभ नहीं लिया है, इसका कोई फायदा नहीं हुआ है।

मेरे विकल्प क्या हैं?

संपादित करें: मैं निम्नलिखित FreeTDS लॉग के साथ छोड़ दिया हूँ ...

config.c:543: Got a match. 
config.c:565: host = 'XXXXXXXXXX' 
config.c:595: Found host entry XXXXXXXXXX. 
config.c:599: IP addr is XXXXXXXXXX. 
config.c:565: port = '1433' 
config.c:565: encryption = 'require' 
config.c:565: check certificate hostname = 'no' 
config.c:629: UNRECOGNIZED option 'check certificate hostname' ... ignoring. 
config.c:565: ca file = 'XXXXXXXXXX.pem' 
config.c:629: UNRECOGNIZED option 'ca file' ... ignoring. 
+0

आपको क्या त्रुटियां मिली हैं? – Jamesking56

+0

कोई नहीं, मैंने यह जांचने के लिए सर्वर से पूछताछ की है कि कनेक्शन एन्क्रिप्ट किया गया था, यह नहीं था। मुझे अब तक कुछ त्रुटियां पसंद आएंगी। –

उत्तर

3

पर आप पीडीओ उपयोग करने के लिए, आप पीडीओ ODBC सेट कर सकते हैं चाहते हैं पर सेट है। आपको कॉन्फ़िगरेशन फ़ाइलों को /etc/odbc.ini, /etc/odbcinst.ini और /etc/freetds/freetds.conf सेट करने की आवश्यकता होगी।

आपको यूनिक्सोडबीसी और फ्रीट्स भी स्थापित करना होगा: apt-get install unixodbc tdsodbc

आप यहाँ और अधिक जानकारी देख सकते हैं: Connect PHP to MSSQL via PDO ODBC

संपादित करें: ODBC में एसएसएल लागू करने, Encrypt कीवर्ड जोड़ने और अपने कनेक्शन स्ट्रिंग में सच करने के लिए यह निर्धारित करने के लिए। प्रति निम्नलिखित विनिर्देश के रूप में freetds.config को ओपी के अनुसार, encryption=require और check certificate hostname जोड़ने: https://support.microsoft.com/en-us/kb/316898

संपादित करें 2: और सेटअप अपने एसक्यूएल सर्वर SSL का उपयोग करने ऊपर के चरणों के साथ http://www.freetds.org/userguide/freetdsconf.htm समस्या ठीक हो जाएगी

+0

मैं इसे मानता हूं, हालांकि मुझे ओडीबीसी के लिए एसएसएल कनेक्शन को मजबूर करने के लिए कोई विशिष्ट साधन नहीं मिल रहा है। –

+0

@SamuelWillems मेरा संपादन देखें –

+0

क्या एन्क्रिप्टेड कीवर्ड dblib का उपयोग करते समय उपलब्ध नहीं है? –

1

आप mssql_connect कॉन्फ़िगर किया गया है एक सुरक्षित कनेक्शन का उपयोग करने के? अपने php.ini में देखो और सत्यापित करें mssql.secure_connection पैरामीटर

[MSSQL] 
mssql.secure_connection = On 
+0

अरे, आपके उत्तर के लिए धन्यवाद। मैं बहिष्कृत होने के बाद से 'mssql_connect' का उपयोग नहीं करना चाहता था। हालांकि, मैंने वास्तव में इस सेटिंग को बदलने और 'mssql_connect' का उपयोग करने की कोशिश की है। मैंने प्रमाण पत्र '/ etc/ssl/certs' में भी स्थापित किया है। मैं सोच रहा था कि मैं इसे कैसे डिबग कर सकता हूं, मुझे वर्तमान में कोई जानकारी नहीं है कि क्या गलत हो रहा है। क्या यह एसएसएल से कनेक्ट करने की कोशिश भी नहीं करता है या क्या यह किसी समस्या में चल रहा है और सादा करने के लिए डिफ़ॉल्ट है? –