Kirjoittaja Aihe: SQLite ja PDO  (Luettu 5901 kertaa)

Kinnari

  • Käyttäjä
  • Viestejä: 407
    • Profiili
SQLite ja PDO
« : 04.05.16 - klo:20.07 »
hei taas
tein Gambas:lla vaimolle ohjelman joka tallensi SQLite3-tietokantaan asiakastietoja. Ohjelma toimi ihan ok. Nyt piti tehdä pieniä muutoksia ohjelmaan. Olin onnistunut hävittämään koneen päivityksen yhteydessä lähdekoodin ohjelmaan. Luulin että minulla oli tässäkin koneessa varmuuskopioinnit kunnossa mutta ei ollut. Oma vika, meni siinä muutakin tarpeellista tietoa mutta minkä sille enää voi. Tärkeä kanta onneksi on turvassa, samoin ohjelma toimii edelleen toisessa koneessa. Ei voi muuta kuin ottaa opiksi :)
Mutta asiaan:
Ajattelin hoitaa uuden version Apachella ja PHP:lla. Apachen asennus onnistui hyvin. Samoin PHP:n. SQLite-tuen? asensin
Koodia: [Valitse]
sudo apt-get -y install php7.0-sqlite3Ongelmana on se että en saa millään php-koodin pätkällä mistään kannasta luettua mitään. Olen yrittänyt etsiä tietoa kannan sijainnista, ei löydy. Missä kansiossa kannan pitää sijaita, pitääkö sillä olla jotain erikoisoikeuksia? Php ei varmaan osaa/saa lukea tietoja esim home-kansiosta. Pitääkö säätäää jotain ennen kuin yhteys toimii?
Sqliteman ohjelmalla pääsen kyllä katselemaan kantojen sisältöjä, joten SQLite puoli pitäisi olla kunnossa.

Muoks: Ubuntu 16.04

matsukan

  • Käyttäjä
  • Viestejä: 2148
    • Profiili
Vs: SQLite ja PDO
« Vastaus #1 : 04.05.16 - klo:20.29 »
Käytätkö PHP komentorivin kautta  vai webrootin kautta ? helpoimmin saat käsiteltyä sitä jos luet kantaa  komentorivin kautta jos ei ole tarkoitus käyttää  tiedostoa web sivujen kautta.

Koodia: [Valitse]
php mysqlite.php

Tällöin php scriptissä pitää antaa tiedoston avaamisen yhteydessä polku missä tietokanta tiedosto sijaitsee.

Jos taasen käytät Apache eli web rootin kautta niin tiedosto pitää olla siellä missä Web sivujen documentroot sijaitsee. Jotenkin vaikuttaa vaan että et ole rakentanut kaikkea kuntoon.
« Viimeksi muokattu: 04.05.16 - klo:20.33 kirjoittanut syrtek66 »
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

Kinnari

  • Käyttäjä
  • Viestejä: 407
    • Profiili
Vs: SQLite ja PDO
« Vastaus #2 : 04.05.16 - klo:21.35 »
tarkoitukseni on että teen php-koodin johon selaimella saisi yheyden. Kantaa käytettäisiin pelkästään omalla koneella. Olen tallentanut kannan documentroottiin. Nyt kantaan on ainoastaan oikeudet rootilla. Tarvitaanko jotain oikeuksia jotta www-sivujen kautta voi luoda ja käyttää tietokantaa?
Alla osa koneen php-info tiedoista

Koodia: [Valitse]
PHP Version 7.0.4-7ubuntu2
System Linux kirsi-Lenovo-B51-80 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64
Server API Apache 2.0 Handler
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php/7.0/apache2
Loaded Configuration File /etc/php/7.0/apache2/php.ini
Scan this dir for additional .ini files /etc/php/7.0/apache2/conf.d
Additional .ini files parsed /etc/php/7.0/apache2/conf.d/10-opcache.ini, /etc/php/7.0/apache2/conf.d/10-pdo.ini, /etc/php/7.0/apache2/conf.d/20-calendar.ini, /etc/php/7.0/apache2/conf.d/20-ctype.ini, /etc/php/7.0/apache2/conf.d/20-exif.ini, /etc/php/7.0/apache2/conf.d/20-fileinfo.ini, /etc/php/7.0/apache2/conf.d/20-ftp.ini, /etc/php/7.0/apache2/conf.d/20-gettext.ini, /etc/php/7.0/apache2/conf.d/20-iconv.ini, /etc/php/7.0/apache2/conf.d/20-json.ini, /etc/php/7.0/apache2/conf.d/20-pdo_sqlite.ini, /etc/php/7.0/apache2/conf.d/20-phar.ini, /etc/php/7.0/apache2/conf.d/20-posix.ini, /etc/php/7.0/apache2/conf.d/20-readline.ini, /etc/php/7.0/apache2/conf.d/20-shmop.ini, /etc/php/7.0/apache2/conf.d/20-sockets.ini, /etc/php/7.0/apache2/conf.d/20-sqlite3.ini, /etc/php/7.0/apache2/conf.d/20-sysvmsg.ini, /etc/php/7.0/apache2/conf.d/20-sysvsem.ini, /etc/php/7.0/apache2/conf.d/20-sysvshm.ini, /etc/php/7.0/apache2/conf.d/20-tokenizer.ini
PHP API 20151012
PHP Extension 20151012
Zend Extension 320151012
Zend Extension Build API320151012,NTS
PHP Extension Build API20151012,NTS
Debug Build no
Thread Safety disabled
Zend Signal Handling disabled
Zend Memory Manager enabled
Zend Multibyte Support disabled
IPv6 Support enabled
DTrace Support enabled
Registered PHP Streams https, ftps, compress.zlib, php, file, glob, data, http, ftp, phar
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2
Registered Stream Filters zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*
Zend logo This program makes use of the Zend Scripting Language Engine:
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
Configuration

apache2handler
Apache Version Apache/2.4.18 (Ubuntu)
Apache API Version 20120211
Server Administrator webmaster@localhost
Hostname:Port 127.0.1.1:80
User/Group www-data(33)/33
Max Requests Per Child: 0 - Keep Alive: on - Max Per Connection: 100
Timeouts Connection: 300 - Keep-Alive: 5
Virtual Server Yes
Server Root /etc/apache2
Loaded Modules core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex mod_deflate mod_dir mod_env mod_filter mod_mime prefork mod_negotiation mod_php7 mod_setenvif mod_status
Directive Local Value Master Value
engine 1 1
last_modified 0 0
xbithack 0 0

Apache Environment
Variable Value
HTTP_HOST localhost
HTTP_USER_AGENT Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0
HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE en-US,en;q=0.5
HTTP_ACCEPT_ENCODING gzip, deflate
HTTP_CONNECTION keep-alive
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SERVER_SIGNATURE <address>Apache/2.4.18 (Ubuntu) Server at localhost Port 80</address>
SERVER_SOFTWARE Apache/2.4.18 (Ubuntu)
SERVER_NAME localhost
SERVER_ADDR 127.0.0.1
SERVER_PORT 80
REMOTE_ADDR 127.0.0.1
DOCUMENT_ROOT /var/www/html
REQUEST_SCHEME http
CONTEXT_PREFIX no value
CONTEXT_DOCUMENT_ROOT /var/www/html
SERVER_ADMIN webmaster@localhost
SCRIPT_FILENAME /var/www/html/info.php
REMOTE_PORT 52130
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING no value
REQUEST_URI /info.php
SCRIPT_NAME /info.php

PDO
PDO support enabled
PDO drivers sqlite

pdo_sqlite
PDO Driver for SQLite 3.x enabled
SQLite Library 3.11.0


nm

  • Käyttäjä
  • Viestejä: 16252
    • Profiili
Vs: SQLite ja PDO
« Vastaus #3 : 04.05.16 - klo:21.53 »
tarkoitukseni on että teen php-koodin johon selaimella saisi yheyden. Kantaa käytettäisiin pelkästään omalla koneella. Olen tallentanut kannan documentroottiin. Nyt kantaan on ainoastaan oikeudet rootilla. Tarvitaanko jotain oikeuksia jotta www-sivujen kautta voi luoda ja käyttää tietokantaa?

Täytyyhän php-koodia suorittavalla prosessilla (eli tässä tapauksella Apachella) olla oikeudet tiedostoon. Sqlite on kirjasto, jota ajetaan samassa prosessissa eikä erillisenä palveluna. Tietokantatiedosto avataan samaan tapaan kuin web-palvelin avaa vaikka kuvatiedoston.

Jos haluat lisäsuojausta ja jotain monimutkaisempaa käyttäjänhallintaa, pitäisi käyttää jotain varsinaista tietokantajärjestelmää, kuten PostgreSQL:ää tai MariaDB:tä.

matsukan

  • Käyttäjä
  • Viestejä: 2148
    • Profiili
Vs: SQLite ja PDO
« Vastaus #4 : 04.05.16 - klo:23.09 »

Käytännössä tarvitset huolehtia siitä jokaisella tiedostolla mitä web sivu käsittää täytyy olla ainakin group olla www-data. Ja omistaja eli ownveri pitää olla mielellään muu kuin root.
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

matsukan

  • Käyttäjä
  • Viestejä: 2148
    • Profiili
Vs: SQLite ja PDO
« Vastaus #5 : 04.05.16 - klo:23.13 »
ja suosittelen miettimään uudestaan miten teet asian koska jos tulet käsittelemään vain omalla koneella niin tällöin Web sovellus ei ole paras ratkaisu.

Voisko esim Qt tai Python tms olla parempi ratkaisu ?
« Viimeksi muokattu: 04.05.16 - klo:23.25 kirjoittanut syrtek66 »
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

Kinnari

  • Käyttäjä
  • Viestejä: 407
    • Profiili
Vs: SQLite ja PDO
« Vastaus #6 : 10.05.16 - klo:10.21 »
Koodia: [Valitse]
ja suosittelen miettimään uudestaan miten teet asian koska jos tulet käsittelemään vain omalla koneella niin tällöin Web sovellus ei ole paras ratkaisu.

Voisko esim Qt tai Python tms olla parempi ratkaisu ?

olen miettinyt itsekin asiaa jo jonkin aikaa. Pohjaa itsestäni:
Olen reilu viiskymppinen, joka on hivenen harrastanut aikoinaan ohjelmointia. Kävin 90-luvun lopulla C:n peruskoulutuksen iltakurssilla, samoin windows-ohjelmoijan peruskoulutuksen. Se sisälsi Visual-C:tä, C++ ja Visual Basicia. Kun vielä käytin vapaaehtoisesti Windowsia niin tein jonkin verran sovelluksia vanhalla Visual Basic 6:lla, lähinnä Accessiin tietokantaan tukeutuvia sovelluksia.
2007 siirryin kayttämään Ubuntua, jonka jälkeen en ole tarvinnut windowsia muuta kuin työssä jossain sovelluksissa johon ei löydy muita työkaluja.
Olen kaivannut omalle pohjalle sopivaa työkalua, jolla saisi tehtyä pieniä sovelluksia. Gambas vaikutti sopivalta, sain muutaman oman jutun tehtyä. Gambasilla on kuitenkin omia ongelmia sovellusten teon kanssa.
Qt ilmeisesti on aika laaja paketti, tutustuin siihen jo jonkin aikaa sitten. Se kuitenkin vaatii aikamoisen perehdyksen ohjelmaan, joten hylkäsin sen. Suomenkielistä selvää alkuopastusta en ole löytänyt, tuo englannin kanssa pärjään auttavasti mutta uuden opettelu ei onnistu.
Pythoniin olen alustavasti tutustunut jo aikaisemmin. Nyt muutamana iltana lisää. Mahdollisesti siinä voisi olla uuden opettelun paikka. Kaikki tarvittavat osat tuntuu löytyvän helposti.
Tuota linux-php-sqlite viritystä ajattelin siksi että tunnen tuota php:tä jonkin verran, saisin sillä tehtyä sopivan sovelluksen selaimeen. Toki se vaatii koneelle tuon serverin toimimaan
HTML5:n tietokantaa testasin myös tuossa aikaisemmin.



matsukan

  • Käyttäjä
  • Viestejä: 2148
    • Profiili
Vs: SQLite ja PDO
« Vastaus #7 : 10.05.16 - klo:13.38 »

Ok, hyvä juttu, tosiaankin linux-php-sqlite on todennäköisesti use case vähän turhan raskas oppia sekä tehdä.  Samalla joutuisit tekemään omasta koneestasi turhaan palvelimen. Entäs Android ? Löytyy hyvin apuja sekä on mobiilina helppo kantaa mukana. Samalla nopeata tehdä alulle jotakin.

Python on ehkä vähän kevyempi opetella, se varmaan olisi myös helppo ylläpitää ja varmasti tulee olemaan näköpiirissä olevan ajan.
« Viimeksi muokattu: 10.05.16 - klo:13.48 kirjoittanut syrtek66 »
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

kamara

  • Käyttäjä
  • Viestejä: 2952
    • Profiili
Vs: SQLite ja PDO
« Vastaus #8 : 10.05.16 - klo:17.52 »
Ok, hyvä juttu, tosiaankin linux-php-sqlite on todennäköisesti use case vähän turhan raskas oppia sekä tehdä.  Samalla joutuisit tekemään omasta koneestasi turhaan palvelimen. Entäs Android ? Löytyy hyvin apuja sekä on mobiilina helppo kantaa mukana. Samalla nopeata tehdä alulle jotakin.

Voi php:täkin ajaa samaan tapaan kuin pythonia, siis ilman palvelinta.

Olikohan paketti php7.0-cli, jolla pystyy ajamaan php-scriptejä vastaavasti kuin bash- tai python-scriptejä.

nm

  • Käyttäjä
  • Viestejä: 16252
    • Profiili
Vs: SQLite ja PDO
« Vastaus #9 : 10.05.16 - klo:18.35 »
Python on ehkä vähän kevyempi opetella, se varmaan olisi myös helppo ylläpitää ja varmasti tulee olemaan näköpiirissä olevan ajan.

Joo, Python on mukava kieli tämäntyyppiseen kehitykseen. Valitettavasti se ei kuitenkaan tarjoa integroitua peruskirjastoa graafisten työpöytäsovellusten kehitykseen, vaan käyttöliittymäkirjastot ovat kolmansien osapuolten kehittämiä, hajanaisesti ylläpidettyjä rajapintoja yleisiin C/C++ -kirjastoihin (Qt, GTK+, wxWidgets jne). C++:aan verrattuna Pythonilla pääsee kyllä helpommalla, mutta Python-sidosten dokumentaatio on yleisesti heikkoa, ja muitakin mutkia voi tulla vastaan. On se silti parempi vaihtoehto kuin näkemäni basic-viritykset.

PyQt5 on tällä hetkellä kehittynein ja monipuolisin alustariippumaton vaihtoehto työpöytä-GUI-kehitykseen Pythonilla. Sen suurin heikkous on ilmaisversion GPL-lisenssi, joka hankaloittaa kaupallisten ohjelmien kehittämistä. Toinen Pythonin Qt-rajapinta PySide puolestaan ei ole vielä valmis Qt5:n osalta. Qt4:n kanssa se toimii hyvin. Käytännössä PyQt ja PySide ovat rajapinnoiltaan lähes identtisiä, joten siirtyminen niiden välillä on helppoa. Ilmeisesti Qt Company alkaa tänä vuonna tukea PySide 2:n kehitystä, mikä on myös hyvä asia.


Voi php:täkin ajaa samaan tapaan kuin pythonia, siis ilman palvelinta.

Olikohan paketti php7.0-cli, jolla pystyy ajamaan php-scriptejä vastaavasti kuin bash- tai python-scriptejä.

Jep, mutta käyttötapauksena on yleensä komentoriviskriptaus. Pieni joukko PHP-fiksautuneita kehittäjiä työstää kyllä myös GUI-kirjastoja, mutta en suosittelisi lähtemään sille tielle.

kamara

  • Käyttäjä
  • Viestejä: 2952
    • Profiili
Vs: SQLite ja PDO
« Vastaus #10 : 10.05.16 - klo:19.53 »
Jep, mutta käyttötapauksena on yleensä komentoriviskriptaus. Pieni joukko PHP-fiksautuneita kehittäjiä työstää kyllä myös GUI-kirjastoja, mutta en suosittelisi lähtemään sille tielle.

Joo se ei minunkaan mielestäni ole oikea kieli GUI:n tekemiseen, mutta esimerkiksi pdf-tiedostojen tekemiseen siihen löytyy erinomainen kirjasto tcpdf, joka handlaa niin utf-8:n kuin pikseli-ja vektorigrafiikat. Tosin en tiedä muiden kielien pdf-kirjastoista, kun on yhden oppinut, niin sitä tulee tekemään sillä. Tosin sitä käyttäessä joutuu ohjelmoimaan, laskemaan ja mittaamaan layout:tia tehdessä.