hoihoi phpeople,

de ubergoeroe die de oplossing levert krijgt een zak mars/snickers/bounty's
of andere goedkope lidl meuk aan huis geleverd.
voorwaarden: op werkdagen, liefst dichtbij station of bus/tram/metrohalte. je raad het al. ov ftw.

--specs onderaan post --

ben voor m'n stage opdracht bezig met het maken van een php app. 99% klaar. MAAR:

ik werk met de sybase_CT library, en als ik een stored procedure (met meerdere return values) aanroep d.m.v. sybase_query(); werkt dat niet, want PHP kan niet met multiple return results omgaan. erg lekker, kan er niks mee, me een ongeluk gezocht maar geen oplossing/patch kunnen vinden.

EN_IK_MOET_DIE_STORED_PROCEDURE_KUNNEN_DRAAIEN_JA.

workaround: d.m.v. command prompt stored procedure aanroepen (Isql utility), en resultaat gebruiken in php script.

nou heb ik dus het volgende probleem: alle program execution functions blijven hangen.. waar kan dit aan liggen? ik krijg geen errors van php...

PHP draait niet in safe mode.
via de command prompt werken ALLE methoden.
aan de rechten kan het bijna niet liggen (op cmd.exe heeft "everyone" lees- en uitvoerrechten) maar toch ook weer WEL, want:
inloggen als administrator op de webserver en scripts draaien werkt perfect.
heeft ergens TOCH iets te maken met rechten dus. maar waar? :S

dit bugreport heeft ook geen z*k geholpen helaas:

http://bugs.php.net/bug.php?id=12300

simpel PHP scriptje:

<?php
system("dir"); // blijft hangen in browser. werkt perfect als uitgevoerd vanuit commando prompt (d.w.z: pad/php.exe scriptnaam.php )
?>

specz:

PHP 5.2.0
---------------
safe mode uit
display errors uit (kan logs nalezen)

server
---------------
server 2003 (non virtueel)
apache 2.0
lees- + uitvoerrechten cmd.exe

P.S ik heb op mijn laptop een testomgeving. daar draait alles als een tierelier (PHP 5.2.5 wamp2 default setup. ik hou van WAMP) . dus: het MOET mogelijk zijn, desnoods d.m.v. php upgrade. ik hoop dat alles duidelijk is,
zo niet: [email protected]

alvast bedankt.
<?php
system("dir");
?>
Zou inderdaad een blanco page moeten geven.
<?php
echo system("dir");
?>
Dit zou output moeten geven.
omg, je hebt gelijk, ik bedoel inderdaad:

<?php
echo system("dir");
?>

evenals:

<?php
echo exec("lol.bat");
?>

inhoud lol.bat:
echo LOL

evenals:

<?php
exec("query.bat", $output);
echo $output[8]; // bepaald nummer dat op regel 8 als output komt.
?>

inhoud query.bat:
isql -i query.sql // Isql query utility syntax blabla

etc... er zijn 4 verschillende prog. execution commands geen van 4 werkt.
alle functies bestaan ook etc, anders had ik wel een undefined function error gekregen o.i.d.

WHELP!
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$dir = system("dir", $i);
if($i === false)
{
echo 'False';
}
else
{
echo 'True '. $i;
}
echo '<br />';
echo $dir;

?>
Dit zou True moeten geven en output. Hier bij mijn test krijg ik alleen True te zien (plus getal). Waarom ik geen output krijg begrijp ik ook niet.
bedankt voor jullie reacties!

@SanThe, je zou bij success inderdaad output moeten krijgen. denk dat die functie bugged is of de description klopt niet helemaal.

handig, ini_set functie! kende ik nog niet, ga ik zeker gebruiken aangezien het tijdelijk is. error reporting stond al op E_ALL, dus ik krijg wel alle errors gelogd.

echo system("dir") zou ook al output moeten geven, maar doet het ook niet.. :/

@bart
bedankt voor de link maar ik werk met sybase, net iets anders dan MySQL ;)
en daarnaast ligt daar het probleem niet :).

mijn aanbieding blijft geldig.
weet iemand misschien een oplossing om in PHP SYBASE stored procedures te runnen met- of zonder (meerdere) return results? dan hoef ik niet via de command line te werken...

ik ben nu bezig om te proberen alle return values in de stored procedure te commenten, maar PHP loopt er nogsteeds op kapot. gvd :@
WORK AROUND gevonden (ZONDER gebruik van cmd / command lines). helaas pindakaas, ik denk dat de zak snoep naar mezelf gaat! ^^

wat ik heb gedaan is het volgende:

in plaats van de volgende stored procedure via een query aanroepen:

=====================================

Declare @NewProdHeaderOrdNr T_Nr_ProdHeadReq
exec IP_get_DefaultProdHeaderOrdNr
@LogProgramCode = 920000
, @IsahUserCode = "ISAH"
, @ProdHeaderOrdNr = @NewProdHeaderOrdNr output

=====================================

de query om deze stored procedure aan te roepen IN EEN stored procedure gezet, LMAO:

=====================================

Create Procedure BLABLA
as
begin
Declare @NewProdHeaderOrdNr T_Nr_ProdHeadReq
exec IP_get_DefaultProdHeaderOrdNr
@LogProgramCode = 920000
, @IsahUserCode = "ISAH"
, @ProdHeaderOrdNr = @NewProdHeaderOrdNr output

SELECT @NewProdHeaderOrdNr NewProdHeaderOrdNr

end

=====================================

en DAN snapt PHP het wel, want er is geen sprake meer van multiple return results. ROFL. hoe ontzettend slecht eigelijk maargoed, het werkt perfect, ik krijg precies wat ik wil en niks meer of minder!

Reageren