Saya disarankan, belum lama ini, untuk mengubah kode saya untuk menggunakan PDO untuk mengatur parameter kueri saya dan menyimpan HTML dengan aman di database.
Nah, inilah masalah utamanya:
Saya melihat http://php.net/manual/en/ref.pdo-mysql.php , dan saya tidak benar-benar mengerti di mana saya harus meletakkan
$ ./configure --with-pdo-mysql
string itu ...Situs yang saya bangun sebenarnya hanya membutuhkan PDO untuk satu halaman. Meskipun saya mungkin mempertimbangkan untuk menulis ulang, ini akan memakan waktu cukup lama dan saya ingin halaman segera berjalan, jadi saya tidak dapat mematikan MySQL sepenuhnya. Jika saya menginstal PDO, apakah saya masih dapat menggunakan
mysql_*
penangan?
Server yang dimaksud menjalankan PHP Versi 5.4.6-1ubuntu1 dan Apache / 2.2.22 (Ubuntu). Saya juga menjalankan database phpMyAdmin, jika itu penting.
sudo apt-get update
kemudian jalankan penginstalan asli dari jawabannya.sudo apt-get install php-mysql
Itu pertanyaan yang bagus, tapi saya pikir Anda hanya salah paham dengan apa yang Anda baca.
Pasang PDO
Ini
./config --with-pdo-mysql
adalah sesuatu yang harus Anda pakai hanya jika Anda mengkompilasi kode PHP Anda sendiri. Jika Anda menginstalnya dengan manajer paket, Anda hanya perlu menggunakan baris perintah yang diberikan oleh Jany Hartikainen:sudo apt-get install php5-mysql
dan jugasudo apt-get install pdo-mysql
Kompatibilitas dengan mysql_
Terlepas dari kenyataan bahwa mysql_ benar-benar tidak disarankan, mereka berdua independen. Jika Anda menggunakan PDO mysql_ tidak terlibat, dan jika Anda menggunakan mysql_ PDO tidak diperlukan.
Jika Anda mematikan PDO tanpa mengubah baris apa pun dalam kode Anda, Anda tidak akan mendapat masalah. Tetapi sejak Anda mulai menghubungkan dan menulis query dengan PDO, Anda harus menyimpannya dan melepaskan mysql_.
Beberapa tahun yang lalu tim MySQL menerbitkan skrip untuk bermigrasi ke MySQLi . Saya tidak tahu apakah itu dapat disesuaikan, tetapi ini resmi.
sumber
Pada dasarnya jawaban dari Jani Hartikainen benar! Saya memuji jawabannya. Apa yang hilang di sistem saya (berdasarkan Ubuntu 15.04) adalah mengaktifkan Ekstensi PDO di php.ini saya
restart webserver (misalnya dengan "sudo service apache2 restart") -> setiap baik-baik saja :-)
Untuk menemukan di mana file php.ini aktif Anda saat ini berada, Anda dapat menggunakan phpinfo () atau beberapa petunjuk lain dari sini: https://www.ostraining.com/blog/coding/phpini-file/
sumber
extension=pdo_mysql.dll
, jadi saya menghapus komentar itu dan memulai kembali apache dan berhasil.sudo apt-get install...
perintah dan tidak ada yang berhasil, akhirnya menambahkan dua baris ini ke php.ini berhasil. Hanya menyebutkan server apache perintah restart yang Anda jalankan setelah menyimpan:sudo service apache2 restart
. Dan jalur file php.ini saya adalah/etc/php/7.0/apache2/php.ini
(OS: Lubuntu 16.04, analog dengan Ubuntu untuk tujuan ini). Jalankansudo gedit <fullpath>
untuk mengeditnya. (gedit atau geany atau editor teks apa pun di sistem Anda)Pertama instal bagian PDO yang diperlukan dengan menjalankan perintah di
sudo apt-get install php*-mysql
mana * adalah nama versi php seperti 5.6, 7.0, 7.1, 7.2 Setelah instalasi Anda perlu menyebutkan (hapus komentar jika sudah ada) kedua pernyataan inidi file .ini Anda dan mulai ulang server Anda dengan perintah
sumber
php*-mysql
. Saya mencobaphp-mysql
danphp7-mysql
tidak berhasil dan kemudian jawaban ini menutup kesepakatan! Terima kasih!Tujuan penggunaan ini adalah untuk mengimplementasikan lapisan keamanan tambahan antara antarmuka pengguna dan database. Dengan menggunakan lapisan ini, data dapat dinormalisasi sebelum dimasukkan ke dalam struktur data Anda. (Kapital adalah Kapital, tanpa spasi di depan atau di belakang, semua tanggal dalam format yang benar.)
Tetapi ada beberapa nuansa yang mungkin tidak Anda sadari.
Pertama-tama, sampai sekarang, Anda mungkin telah menulis semua kueri Anda dalam sesuatu yang mirip dengan URL, dan Anda meneruskan parameter menggunakan URL itu sendiri. Menggunakan PDO, semua ini dilakukan di bawah level antarmuka pengguna. Antarmuka pengguna menyerahkan bola ke PDO yang membawanya ke lapangan dan menanamnya ke dalam database untuk TOUCHDOWN 7 poin .. dia mendapat tujuh poin, karena dia mendapatkannya di sana dan melakukannya jauh lebih aman daripada meneruskan informasi melalui URL .
Anda juga dapat memperkuat situs Anda ke injeksi SQL dengan menggunakan lapisan data. Dengan menggunakan lapisan perantara ini yaitu HANYA 'pemain' yang berbicara ke database itu sendiri, saya yakin Anda dapat melihat bagaimana ini bisa jauh lebih aman. Antarmuka ke datalayer ke database, datalayer ke database ke datalayer ke antarmuka.
Dan:
Dengan menerapkan praktik terbaik saat menulis kode Anda, Anda akan jauh lebih bahagia dengan hasilnya.
Sumber tambahan:
Re: Fungsi MySQL di url php dot net / manual / en / ref dot pdo-mysql dot php
Perihal: arsitektur tiga tingkat - menambahkan keamanan ke aplikasi Anda https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/
Perihal: Desain Berorientasi Objek menggunakan UML Jika Anda benar-benar ingin mempelajari lebih lanjut tentang ini, ini adalah buku terbaik di pasaran, Grady Booch adalah bapak UML http://dl.acm.org/citation.cfm?id=291167&CFID = 241218549 & CFTOKEN = 82813028
Atau periksa dengan bitmonkey. Ada kelompok di sana yang saya yakin Anda bisa belajar banyak.
>
Jika kita tahu apa arti sebenarnya dari terminologi itu, kita tidak perlu mempelajari apa pun.
>
sumber
Jika Anda membutuhkan CakePHP Docker Container dengan MySQL, saya telah membuat image Docker untuk tujuan itu! Tidak perlu khawatir tentang pengaturannya. Ini berhasil!
Begini cara saya menginstal di image berbasis Ubuntu:
https://github.com/marcellodesales/php-apache-mysql-4-cakephp-docker/blob/master/Dockerfile#L8
Membangun dan menjalankan aplikasi Anda hanyalah proses 2 langkah (mengingat Anda berada di direktori aplikasi saat ini):
sumber
sudo /etc/init.d/apache2 restart
diperlukan untuk me-restart server apache