MySQL Linux सर्वर पर PDO ड्राइवर स्थापित करना


102

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

खैर, यहाँ मुख्य समस्याएं हैं:

  1. मैंने http://php.net/manual/en/ref.pdo-mysql.php को देखा , और मुझे वास्तव में वह जगह नहीं मिली जहां मुझे वह $ ./configure --with-pdo-mysqlतार लगाना चाहिए ...

  2. मैं जिस साइट का निर्माण कर रहा हूं, उसे केवल एक पृष्ठ के लिए पीडीओ की आवश्यकता है। हालांकि मैं इसे फिर से लिखने पर विचार कर सकता हूं, लेकिन इसमें थोड़ा समय लगेगा और मुझे जल्द ही पृष्ठों की आवश्यकता होगी, इसलिए मैं MySQL को पूरी तरह से बंद नहीं कर सकता। यदि मैं पीडीओ स्थापित करता हूं, तो क्या मैं अभी भी mysql_*हैंडलर का उपयोग कर पाऊंगा ?

विचाराधीन सर्वर PHP संस्करण 5.4.6-1ubuntu1 और Apache / 2.2.22 (Ubuntu) चला रहा है। मैं भी एक phpMyAdmin डेटाबेस चला रहा हूँ, अगर यह मायने रखता है।

जवाबों:


183

उबंटू पर आपको उपयुक्त पीडीओ भागों का उपयोग करने में सक्षम होना चाहिए sudo apt-get install php5-mysql

PDO और mysql_ का एक साथ उपयोग करने के बीच कोई सीमा नहीं है। हालाँकि आपको अपने DB में दो कनेक्शन बनाने की आवश्यकता होगी, एक mysql_ के साथ और एक PDO का उपयोग करके।


1
ठीक है, मैंने अपनी php.ini फ़ाइल में देखा और यह डिफ़ॉल्ट रूप से सक्षम में pdo जैसा दिखता है, मुझे अभी भी यह जानना होगा कि क्या मैं pdo और mysql_ * हैंडलर दोनों का उपयोग कर सकता हूं ...
Yuri Scarbaci

1
@ YuriCollector'EditionRossi उस के लिए जवाब अद्यतन।
जानी हार्टिकेनन

1
यह ध्यान देने योग्य है कि आपको परिवर्तनों को लागू करने के लिए बाद में अपाचे को फिर से शुरू करना होगा।
एडम एफ

1
@jonaspas यदि आप ubuntu पर हैं, sudo apt-get updateतो उत्तर से मूल इंस्टॉल चलाने के साथ अपडेट करने का प्रयास करें ।
ryAn_Hdot

14
धन्यवाद ryAn_Hdot! लेकिन वह भी मेरे लिए काम नहीं किया। मेरा समाधान अब: मैं php7 चला रहा था और मुझे करना थाsudo apt-get install php-mysql
johnnydoe82

25

यह एक अच्छा सवाल है, लेकिन मुझे लगता है कि आपने जो पढ़ा है, उसे आप गलत समझ रहे हैं।

पीडीओ स्थापित करें

./config --with-pdo-mysqlकुछ आप पर डाल करने के लिए है है केवल यदि आप अपने खुद के PHP कोड संकलन। यदि आप इसे पैकेज प्रबंधकों के साथ स्थापित करते हैं, तो आपको सिर्फ Jany Hartikainen द्वारा दी गई कमांड लाइन का उपयोग करना होगा: sudo apt-get install php5-mysqlऔर भीsudo apt-get install pdo-mysql

Mysql_ के साथ संगतता

इस तथ्य के अलावा कि mysql_ वास्तव में हतोत्साहित है, वे दोनों स्वतंत्र हैं। यदि आप PDO का उपयोग करते हैं तो mysql_ को फंसाया नहीं जाता है, और यदि आप mysql_ का उपयोग करते हैं तो PDO की आवश्यकता नहीं है।

यदि आप अपने कोड में कोई लाइन बदले बिना पीडीओ को बंद कर देते हैं, तो आपको कोई समस्या नहीं होगी। लेकिन जब से आपने पीडीओ के साथ प्रश्नों को जोड़ना और लिखना शुरू किया है, आपको इसे रखना होगा और mysql_ को छोड़ना होगा।

कई साल पहले MySQL टीम ने MySQLi पर माइग्रेट करने के लिए एक स्क्रिप्ट प्रकाशित की थी । मुझे नहीं पता कि यह अनुकूलित किया जा सकता है, लेकिन यह आधिकारिक है।


इसलिए अगर मैं एक ही समय में दोनों का उपयोग करना चाहता हूं तो मुझे दोनों कनेक्शन विधियों का उपयोग करना होगा? मेरा क्या मतलब है: मेरे पास 50 पेज पहले से ही चल रहे हैं, बहुत सारे कोड के साथ, इसे विकसित होने के एक वर्ष की तरह लिया गया है और मैं सिर्फ 1 पेज के लिए वापस मुड़ नहीं सकता, वैसे भी अब नहीं ... मुझे क्या करने की आवश्यकता है? उन 50 पृष्ठों को चलाने के रूप में वे कर रहे हैं, और यह एक पृष्ठ मैं अब pdo का उपयोग कर रहा हूँ, यह भी संभव है? आपके समय के लिए धन्यवाद ^ ^
यूरी स्कारबासी

यदि आपको बहुत सारे कोड बदलने पड़ते हैं, तो रिफलेक्ट करना उपयोगी हो सकता है। लेकिन हां, यदि आप दोनों का उपयोग करना चाहते हैं, तो आपको दो कनेक्शन स्थापित करने होंगे।
आर्ट्रैगिस

वहाँ एक आसान क्यों मेरे कोड refactore करने के लिए है? मैं वर्तमान में एक ऐसे काम पर काम कर रहा हूं जिसमें मैंने अपना काम शुरू नहीं किया था, यह एक अन्य प्रोग्रामर द्वारा किया गया था, जो इसे छोड़ दिया था, और अब मुझे उसके कोड के अनुकूल होना होगा ... यह थोड़ा कठोर है क्योंकि हर किसी की अपनी शैली है, इसलिए मैं इसे अभी के लिए छोड़ दूंगा जैसा कि यह अभी के लिए है, क्योंकि इस सॉफ़्टवेयर का उपयोग अब तक बिना किसी समस्या के किया गया था ... thx btw ^ ^ क्या मुझे pdo को खोलने से पहले mysql कनेक्शन को बंद करने की आवश्यकता है, या मैं दोनों को खुले में रख सकता हूं उसी समय? ^ ^
यूरी स्कारबैसी

1
शायद आप netbeans या ग्रहण की तरह एक IDE का उपयोग कर सकते हैं
आर्ट्रैगिस

1
मुझे एक स्क्रिप्ट मिली, जो आपको mysqli की ओर पलायन करने की अनुमति देती है, और शायद PDO को
आर्ट्रैगिस

17

मूल रूप से जानी हार्टिकेनन का उत्तर सही है! मैंने उसके जवाब को उकेरा। मेरे सिस्टम (उबंटू 15.04 पर आधारित) में क्या गायब था, मेरे php.ini में PDO एक्सटेंशन को सक्षम करना था

extension=pdo.so
extension=pdo_mysql.so

वेबसर्वर को पुनरारंभ करें (जैसे "sudo service apache2 पुनरारंभ" के साथ) -> हर ठीक :-)

यह जानने के लिए कि आपकी वर्तमान सक्रिय php.ini फ़ाइल कहाँ स्थित है, आप यहाँ से phpinfo () या कुछ अन्य संकेतों का उपयोग कर सकते हैं: https://www.ostraining.com/blog/coding/phpini-file/


मेरे लिए काम किया। धन्यवाद। +1
मार्सेल

1
मेरी php.ini फ़ाइल में ये पंक्तियाँ नहीं थीं। मेरे पास केवल extension=pdo_mysql.dllइतना है , इसलिए मैंने इसे अनसुना कर दिया और अपाचे को फिर से शुरू किया और यह काम किया।
user3494047

@ user3494047 मुझे लगता है कि आप एक विंडोज़ सिस्टम पर हैं। मैंने एक लिनक्स सिस्टम से कॉन्फिग एक्सेप्शन लिया। लेकिन बहुत अच्छा है कि आपने अपना अनुभव साझा किया!
टोबियास गर्टनर

वास्तव में इसकी ubuntu 14.04
user3494047

धन्यवाद! मैंने एक दर्जन sudo apt-get install...कमांड चलाए और कुछ भी काम नहीं किया, आखिरकार इन दो लाइनों को जोड़कर php.ini ने किया। अपाचे सर्वर रिस्टार्ट कमांड का उल्लेख करते हुए जिसे आप सेव करने के बाद चलाते हैं sudo service apache2 restart:। और मेरा php.ini फ़ाइल पथ था /etc/php/7.0/apache2/php.ini(OS: Lubuntu 16.04, इन उद्देश्यों के लिए उबंटू के अनुरूप)। sudo gedit <fullpath>इसे संपादित करने के लिए चलाएँ । (gedit या geany या आपके सिस्टम पर कोई पाठ संपादक)
निखिल वीजे

10

पहले कमांड को चलाकर आवश्यक पीडीओ भागों को स्थापित करें, sudo apt-get install php*-mysqlजहां * php का एक संस्करण नाम है जैसे 5.6, 7.0, 7.1, 7.2 स्थापना के बाद आपको उल्लेख करने की आवश्यकता है (यदि पहले से मौजूद है तो इन दो बयानों में)

extension=pdo.so
extension=pdo_mysql.so

अपने .ini फ़ाइल में और कमांड द्वारा अपने सर्वर को पुनरारंभ करें

sudo service apache2 restart

यह उत्तर कोई नई जानकारी नहीं जोड़ता है - इसलिए इसका imo सहायक नहीं है।
टोबियास गर्टनर

1
यह उत्तर बेहद मददगार था क्योंकि इसमें बताया गया था कि आपको पीएचपी संस्करण संख्या की आवश्यकता है php*-mysql। मैं कोशिश कर रहा था php-mysqlऔर php7-mysqlकोई फायदा नहीं हुआ और फिर इस जवाब ने इस सौदे को सील कर दिया! धन्यवाद!
jedmao

मेरे लिए काम किया। धन्यवाद।
माहिर अल्तन्काया

@ MahirAltınkaya Gald, इससे मदद मिली।
अवनीश आलोक

8
  1. पीडीओ PHP डेटा ऑब्जेक्ट के लिए है।
  2. PDO_MYSQL ड्राइवर है जो डेटाबॉजेक्ट (डेटाबेस) और उपयोगकर्ता इनपुट (उपयोगकर्ता इंटरफ़ेस के तहत एक परत जिसे "कोड पीछे" कहा जाता है) को आपके डेटा ऑब्जेक्ट, MySQL डेटाबेस तक पहुंच प्रदान करेगा।

इसका उपयोग करने का उद्देश्य उपयोगकर्ता इंटरफ़ेस और डेटाबेस के बीच सुरक्षा की एक अतिरिक्त परत को लागू करना है। इस परत का उपयोग करके, आपके डेटा संरचना में डाले जाने से पहले डेटा को सामान्य किया जा सकता है। (राजधानियाँ राजधानियाँ हैं, कोई अग्रणी या अनुगामी स्थान नहीं है, सभी तिथियां ठीक से बनाई गई हैं।)

लेकिन इसकी कुछ बारीकियां हैं जिनके बारे में आप शायद नहीं जानते होंगे।

सबसे पहले, अब तक, आपने संभवतः अपने सभी प्रश्नों को URL के समान लिखा है, और आप स्वयं URL का उपयोग करके पैरामीटर पास करते हैं। पीडीओ का उपयोग करना, यह सब यूजर इंटरफेस स्तर के तहत किया जाता है। उपयोगकर्ता इंटरफ़ेस गेंद को PDO को सौंपता है जो इसे नीचे ले जाता है और इसे 7-बिंदु TOUCHDOWN के लिए डेटाबेस में रखता है। उसे सात अंक मिलते हैं, क्योंकि उसने इसे वहां प्राप्त किया और URL के माध्यम से जानकारी पारित करने की तुलना में अधिक सुरक्षित रूप से किया। ।

आप डेटा-लेयर का उपयोग करके अपनी साइट को SQL इंजेक्शन के लिए भी सख्त कर सकते हैं । इस मध्यस्थ परत का उपयोग करके, जो केवल 'खिलाड़ी' है जो डेटाबेस से बात करता है, मुझे यकीन है कि आप देख सकते हैं कि यह और अधिक सुरक्षित कैसे हो सकता है। डेटाबेस के लिए डेटालेटर के लिए इंटरफ़ेस, इंटरफ़ेस के लिए डेटाबेस के लिए डेटाबेस के लिए डेटालेटर

तथा:

अपने कोड को लिखते समय सर्वोत्तम प्रथाओं को लागू करने से आप परिणाम के साथ बहुत खुश होंगे।

अतिरिक्त स्रोत:

रे: MySQL के कार्य url php डॉट नेट / मैनुअल / en / ref डॉट pdo-mysql डॉट phpp में

पुन: तीन स्तरीय वास्तुकला - अपने अनुप्रयोगों में सुरक्षा जोड़ना https://blog.42.nl/articles/introducing-a-security-layer-in-your-application- RGBecture/

यूएमएल का उपयोग करके ऑब्जेक्ट ओरिएंटेड डिज़ाइन यदि आप वास्तव में इसके बारे में अधिक जानना चाहते हैं, तो यह बाजार पर सबसे अच्छी किताब है, ग्रैडी बूच यूएमएल के पिता थे http://dl.acm.org/citation.cfm?id=29114&CFID = 241218549 और CFTOKEN = 82813028

या बिटकॉइन से जांच करें। वहाँ एक समूह है मुझे यकीन है कि आप बहुत कुछ सीख सकते हैं।

>

अगर हमें पता था कि शब्दावली का वास्तव में मतलब है तो हमें कुछ भी सीखने की आवश्यकता नहीं होगी।

>


0

यदि आपको MySQL के साथ CakePHP डॉकटर कंटेनर की आवश्यकता है, तो मैंने उस उद्देश्य के लिए एक डॉकटर छवि बनाई है! इसे स्थापित करने के लिए चिंता करने की आवश्यकता नहीं है। यह सिर्फ काम करता है!

यहां बताया गया है कि मैंने उबंटू-आधारित छवि में कैसे स्थापित किया है:

https://github.com/marcellodesales/php-apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8

RUN docker-php-ext-install mysql mysqli pdo pdo_mysql

अपने एप्लिकेशन को बनाना और चलाना केवल 2 चरण की प्रक्रिया है (इस पर विचार करते हुए कि आप ऐप की वर्तमान निर्देशिका में हैं):

$ docker build -t myCakePhpApp .
$ docker run -ti myCakePhpApp

मामले में अगर कोई पहले से चल रहे डॉकटर कंटेनर के साथ ऐसा करने की कोशिश करता है: sudo /etc/init.d/apache2 restartअपाचे सर्वर को फिर से शुरू करने की जरूरत है
मेजरब्रिकफ़ेस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.