/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Argh. Debian+php4+mssql = vriker... og så ~
Fra : mzedeler@gmail.com


Dato : 22-09-06 14:54

Dette her er meget meget mærkeligt.

På en Debian 3.1 (Sarge) har jeg installeret php4.

Kører jeg dette script

<?php
$link = mssql_connect('mindatabase', 'minbruger',
'mitpassword') or die ("Argh");
$result = mssql_query("SELECT * FROM kunder", $link);
print implode(", ", mssql_fetch_row($result));
?>

Får jeg et resultat direkte fra databaseserveren mindatabase, som er
en Windows 2003-maskine med MS SQL. Det er jo fint. Men så bliver det
rigtig underligt, for

php -m

Giver:

[PHP Modules]
bcmath
bz2
calendar
ctype
dba
dbx
exif
filepro
ftp
gettext
iconv
imap
mbstring
mime_magic
ncurses
openssl
overload
pcntl
pcre
posix
session
shmop
sockets
standard
sybase_ct
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlrpc
xslt
yp
zip
zlib

Modulet "mssql" er altså IKKE installeret!?!¤&#¤

Hvis jeg prøver at bruge PEAR-modulet MDB2 med mssql, siger den at
mssql ikke er installeret, men det er det jo, for funktionerne virker
udemærket.

I php.ini er der også en masse konfigurationsting til mssql-modulet.
Hvad i alverden er det, der foregår? Er det lykkedes for
php4-pakke-passeren hos Debian at compile msqql ind i php4 på en
måde, så php4 ikke ved at modulet er med?

Mvh. Michael.


 
 
Jesper Brunholm (22-09-2006)
Kommentar
Fra : Jesper Brunholm


Dato : 22-09-06 15:26

mzedeler@gmail.com skrev:
> På en Debian 3.1 (Sarge) har jeg installeret php4.
>
> $link = mssql_connect('mindatabase', 'minbruger',
> 'mitpassword') or die ("Argh");
> $result = mssql_query("SELECT * FROM kunder", $link);
> print implode(", ", mssql_fetch_row($result));
> ?>
>
> Får jeg et resultat direkte fra databaseserveren mindatabase, som er
> en Windows 2003-maskine med MS SQL. Det er jo fint. Men så bliver det
> rigtig underligt, for

[snip: du kan lave et mssql_connect kald, men Pear mener ikke at mssql
modulet er installeret]

Jeg ved ikke ret meget om Debian, og endnu mindre om non-apache servere
med PHP, men kan du bruge den her til noget?
<http://www.aspfree.com/c/a/MS-SQL-Server/Using-PHP-with-MS-SQL-Server/>

Jeg synes som regel man får bedre information om en installation med
php_info()

mvh

Jesper Brunholm

Michael Zedeler (22-09-2006)
Kommentar
Fra : Michael Zedeler


Dato : 22-09-06 19:37

Jesper Brunholm wrote:
> mzedeler@gmail.com skrev:
>
>> På en Debian 3.1 (Sarge) har jeg installeret php4.
>>
>> $link = mssql_connect('mindatabase', 'minbruger',
>> 'mitpassword') or die ("Argh");
>> $result = mssql_query("SELECT * FROM kunder", $link);
>> print implode(", ", mssql_fetch_row($result));
>> ?>
>>
>> Får jeg et resultat direkte fra databaseserveren mindatabase, som er
>> en Windows 2003-maskine med MS SQL. Det er jo fint. Men så bliver det
>> rigtig underligt, for
>
> [snip: du kan lave et mssql_connect kald, men Pear mener ikke at mssql
> modulet er installeret]
>
> Jeg ved ikke ret meget om Debian, og endnu mindre om non-apache servere
> med PHP, men kan du bruge den her til noget?
> <http://www.aspfree.com/c/a/MS-SQL-Server/Using-PHP-with-MS-SQL-Server/>

Der står ikke rigtig noget, jeg ikke vidste i forvejen - at FreeTDS,
Sybase og MS SQL bruger samme protokol.

Til gengæld fandt jeg ud af hvad problemet er. Hvis man kigger på
listen, står der at sybase_ct er installeret. Jeg prøvede at
afinstallere det modul blot for at se om mon ikke mssql-funktionerne så
skulle forsvinde, og mindsanten om ikke de gjorde det!

Med andre ord, er der to moduler til PHP som leverer de samme funktioner
til at kommunikere med mssql. Jeg gad nok vide hvad der sker hvis man
ønsker at have dem begge på en gang. SUK.

Jeg bliver aldrig glad for PHP.

Løsningen er, at jeg bruger PEARs DB i stedet for den nyere MDB2 indtil
en eller anden udvikler indser at sybase_ct er et alias for mssql
(modulo diverse afvigende implementationer, som sikkert er en pain in
the a.. at håndtere).

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Stig Johansen (24-09-2006)
Kommentar
Fra : Stig Johansen


Dato : 24-09-06 05:26

Michael Zedeler wrote:

> Der står ikke rigtig noget, jeg ikke vidste i forvejen - at FreeTDS,
> Sybase og MS SQL bruger samme protokol.
[snip]

> Jeg bliver aldrig glad for PHP.
>
> Løsningen er, at jeg bruger PEARs DB i stedet for den nyere MDB2 indtil
> en eller anden udvikler indser at sybase_ct er et alias for mssql
> (modulo diverse afvigende implementationer, som sikkert er en pain in
> the a.. at håndtere).

Jeg bruger ikke selv PHP, men don't blame it on PHP.

Problemet er, at MS SQLServer er en videreudvikling af Sybase, der begge
bruger TDS. På det tidspunlt, hvor MS købte Sybase, var det samme version.
TDS er en lukket protokol, og jeg går ud fra, at MS gør sit bedste for at
den ikke fungerer under *nix.

FreeTDS er en implementering baseret på reverse engeneering, hvilket gør, at
det altid vil være et catch-up game.

Jeg prøvede for en del år siden at connecte til en MS SQLserver 2K via
FreeTDS, but no luck.

Det ser dog ud som om mono-projektet har pustet nyt liv(behov?) i FreeTDS.

--
Med venlig hilsen
Stig Johansen

Michael Zedeler (24-09-2006)
Kommentar
Fra : Michael Zedeler


Dato : 24-09-06 18:00

Stig Johansen wrote:
> Michael Zedeler wrote:
>
>
>>Der står ikke rigtig noget, jeg ikke vidste i forvejen - at FreeTDS,
>>Sybase og MS SQL bruger samme protokol.
>
> [snip]
>
>
>>Jeg bliver aldrig glad for PHP.
>>
>>Løsningen er, at jeg bruger PEARs DB i stedet for den nyere MDB2 indtil
>>en eller anden udvikler indser at sybase_ct er et alias for mssql
>>(modulo diverse afvigende implementationer, som sikkert er en pain in
>>the a.. at håndtere).
>
> Jeg bruger ikke selv PHP, men don't blame it on PHP.
>
> Problemet er, at MS SQLServer er en videreudvikling af Sybase, der begge
> bruger TDS. På det tidspunlt, hvor MS købte Sybase, var det samme version.
> TDS er en lukket protokol, og jeg går ud fra, at MS gør sit bedste for at
> den ikke fungerer under *nix.

Jeg er udemærket bekendt med problemet, men det forklarer ikke hvorfor
der findes både et mssql-modul og et sybase_ct-modul til PHP, som har
funktioner der starter med mssql. Det kan man i høj grad godt beskylde
PHP-udviklerne for. Selvfølgelig skulle sybase-modulet have præfikset
sybase.

> FreeTDS er en implementering baseret på reverse engeneering, hvilket gør, at
> det altid vil være et catch-up game.
>
> Jeg prøvede for en del år siden at connecte til en MS SQLserver 2K via
> FreeTDS, but no luck.

Det virker fint nu, skulle jeg hilse og sige.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Johan Holst Nielsen (25-09-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 25-09-06 05:56

Michael Zedeler wrote:
>> Problemet er, at MS SQLServer er en videreudvikling af Sybase, der begge
>> bruger TDS. På det tidspunlt, hvor MS købte Sybase, var det samme
>> version.
>> TDS er en lukket protokol, og jeg går ud fra, at MS gør sit bedste for at
>> den ikke fungerer under *nix.
>
> Jeg er udemærket bekendt med problemet, men det forklarer ikke hvorfor
> der findes både et mssql-modul og et sybase_ct-modul til PHP, som har
> funktioner der starter med mssql. Det kan man i høj grad godt beskylde
> PHP-udviklerne for. Selvfølgelig skulle sybase-modulet have præfikset
> sybase.

Lyder mere som en compling fejl et sted... nu kender jeg ikke
"sybase_ct" modulet - det er heller ikke nævnt på PHP's side (måske er
det uoffielt?) - Sybase funktionerne (iflg. php.net) skal alle starte
med sybase_* - tror nærmere det er din version som er compiled forkert
eller der er brugt et forkert modul et sted.

Men stadig er det noget pjat ar skyde skylden på PHP. Modulerne i PHP
kan være udviklet af hvem som helst. Du kan selv udvikle dine
funktioner, og compile dem med PHP? Så fejlen kan stadig ligge masser af
steder...

mvh
johan

Michael Zedeler (25-09-2006)
Kommentar
Fra : Michael Zedeler


Dato : 25-09-06 19:56

Johan Holst Nielsen wrote:
> Michael Zedeler wrote:
>
>>> Problemet er, at MS SQLServer er en videreudvikling af Sybase, der begge
>>> bruger TDS. På det tidspunlt, hvor MS købte Sybase, var det samme
>>> version.
>>> TDS er en lukket protokol, og jeg går ud fra, at MS gør sit bedste
>>> for at
>>> den ikke fungerer under *nix.
>>
>>
>> Jeg er udemærket bekendt med problemet, men det forklarer ikke hvorfor
>> der findes både et mssql-modul og et sybase_ct-modul til PHP, som har
>> funktioner der starter med mssql. Det kan man i høj grad godt beskylde
>> PHP-udviklerne for. Selvfølgelig skulle sybase-modulet have præfikset
>> sybase.
>
> Lyder mere som en compling fejl et sted... nu kender jeg ikke
> "sybase_ct" modulet - det er heller ikke nævnt på PHP's side (måske er
> det uoffielt?) - Sybase funktionerne (iflg. php.net) skal alle starte
> med sybase_* - tror nærmere det er din version som er compiled forkert
> eller der er brugt et forkert modul et sted.

Det er en helt frisk debian-pakke.

> Men stadig er det noget pjat ar skyde skylden på PHP. Modulerne i PHP
> kan være udviklet af hvem som helst. Du kan selv udvikle dine
> funktioner, og compile dem med PHP? Så fejlen kan stadig ligge masser af
> steder...

Det kan godt være at du synes at det er noget pjat. Jeg synes at de
skulle have organiseret deres pakkesystem bedre, så den slags fejl ikke
kan opstå så nemt. Hele det cirkus med at alle databasefunktionerne
hedder noget forskelligt, at afhængigt af hvilken database, man snakker
med, har jeg altid fundet amatøragtigt. Først nu hvor der er dukket et
databaseabstraktionslag - 10-15 år efter PHP blev til, kan man skifte
database uden at skulle lave søg og erstat igennem al koden.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Nezar Nielsen (02-10-2006)
Kommentar
Fra : Nezar Nielsen


Dato : 02-10-06 15:55

Michael Zedeler wrote:

> med, har jeg altid fundet amatøragtigt. Først nu hvor der er dukket et
> databaseabstraktionslag - 10-15 år efter PHP blev til, kan man skifte
> database uden at skulle lave søg og erstat igennem al koden.

Nå nå nå,

http://pear.php.net/package/DB/download/ siger

1.2    2002-04-24 stable

Og jeg er ret sikker på at jeg i hvert fald har brugt DB klassen før det.
Version 3, som for de fleste nok er den første "rigtige" php kom da
først omkring '97, så vi taler kun 5 år - Såvidt jeg lige kan google mig
til blev perl opfundet i '87 og den første version af DBI(eller DBperl
som den hed) blev skrevet i '92, og du sidder vel ikke at siger at perl
er amatøragtigt? ;)

--
Mvh. Nezar Nielsen
http://gorilla.dk

Johan Holst Nielsen (25-09-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 25-09-06 06:04

Michael Zedeler wrote:
> Jeg er udemærket bekendt med problemet, men det forklarer ikke hvorfor
> der findes både et mssql-modul og et sybase_ct-modul til PHP, som har
> funktioner der starter med mssql. Det kan man i høj grad godt beskylde
> PHP-udviklerne for. Selvfølgelig skulle sybase-modulet have præfikset
> sybase.

5 minutter brugt i dokumentationen fortæller:
"...it is possible to install both the FreeTDS libraries and the Sybase
libraries. The problem is that the Sybase extension alias's its
function names to the mssql_ functions.

Take a look in your PHP source directory under
/ext/sybase_ct/php_sybase_ct.c near the top where the sybase_functions[]
declaration is. You can comment out the part that alias's the function
names, recompile with FreeTDS and Sybase, and you're all set!"

mvh
Johan

Michael Zedeler (25-09-2006)
Kommentar
Fra : Michael Zedeler


Dato : 25-09-06 19:58

Johan Holst Nielsen wrote:
> Michael Zedeler wrote:
>
>> Jeg er udemærket bekendt med problemet, men det forklarer ikke hvorfor
>> der findes både et mssql-modul og et sybase_ct-modul til PHP, som har
>> funktioner der starter med mssql. Det kan man i høj grad godt beskylde
>> PHP-udviklerne for. Selvfølgelig skulle sybase-modulet have præfikset
>> sybase.
>
> 5 minutter brugt i dokumentationen fortæller:
> "...it is possible to install both the FreeTDS libraries and the Sybase
> libraries. The problem is that the Sybase extension alias's its
> function names to the mssql_ functions.

Tak for henvisningen.

> Take a look in your PHP source directory under
> /ext/sybase_ct/php_sybase_ct.c near the top where the sybase_functions[]
> declaration is. You can comment out the part that alias's the function
> names, recompile with FreeTDS and Sybase, and you're all set!"

Vi har taget en beslutning om kun i alleryderste nødstilfælde at compile
egne pakker. Så kan jeg selvfølgelig altid skyde med skarpt efter
debian-pakkepasseren, men man må jo spørge sig selv hvorfor man i første
omgang har valgt overhovedet at gøre det muligt at lave namespace-kludge...?

Svar: fordi PHP ikke har et indbygget databaseabstraktionslag. Dermed er
bolden tilbage hos PHP-udviklerne, der lagde fundamentet til problemet.

Så jeg kan stadigvæk ikke lide PHP.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste