Door
Bart Maes
op 13-05-2019 05:51
gewijzigd op 13-05-2019 08:37
3.288 views
Hallo, ik werk op een centos 7 server waarop php en apache geïnstalleerd zijn.
Ik wil dat wanneer iemand een button aanklikt er een Docker container opgestart wordt.
onder /var/www/html staat webscript.php
onder /var/www/cgi-bin staat docker_run.sh
En is je test.sh ook wel uitvoerbaar?
En kijk ook eens wat de uitvoer is van je shell-script:
<?php
exec("test.sh",$output);
echo "Uitvoer: ".print_r($output,true);
?>
Dat docker.sh script gaat niet werken want het script heeft het over een nginx terwijl je een apache2 geinstalleerd hebt.
Waarom zou dat niet werken? Het gaat hier over nginx runnen in een docker container, dan maakt dat toch niet uit dat er apache op de hostmachine staat?
[size=xsmall]Toevoeging op 14/05/2019 13:30:24:[/size]
Misschien dit eens proberen:
Indien je script niet runt zou ik vooral wel gaan kijken of PHP rechten heeft om dat shell script uit te voeren. In de variabele $output wordt nu de output opgevangen en geprint op het scherm zodoende je verder kan debuggen.
Indien je script niet runt zou ik vooral wel gaan kijken of PHP rechten heeft om dat shell script uit te voeren.
Dit kun je toch in afzondering testen en dat hoef je (in eerste instantie, om dingen te testen) niet te doen via een form submit? Dat pogingen om een form submit af te handelen falen vanwege gebrekkige kennis lijkt mij een apart probleem.
Separation of concerns mensen.
Daarnaast wil je ook terugkopppeling over wat (niet) werkt, dus maak je scripts verbose (mondig).
<?php
if (<een of andere conditie die je hebt verzonnen>) {
echo 'werkt prima';
} else {
echo 'no soup for you'; // <-- nu weet je dat je zut niet werkt
}
?>
Dit kun je toch in afzondering testen en dat hoef je (in eerste instantie, om dingen te testen) niet te doen via een form submit? Dat pogingen om een form submit af te handelen falen vanwege gebrekkige kennis lijkt mij een apart probleem.
Separation of concerns mensen.
Daarnaast wil je ook terugkopppeling over wat (niet) werkt, dus maak je scripts verbose (mondig).
<?php
if (<een of andere conditie die je hebt verzonnen>) {
echo 'werkt prima';
} else {
echo 'no soup for you'; // <-- nu weet je dat je zut niet werkt
}
?>
Je webserver user kan een andere user/group zijn dan wanneer je het script via SSH test, vandaar dat ik het even aanhaalde. Dan heeft je afgezonderde test een andere uitkomst dan je test via de webserver user.
Die else kan je aanwenden om het wat mooier weer te geven, ik verkoos een var_dump omdat je dan ziet wat de output van je exec is. Beetje programmeur kan er dan uit afleiden of het wel/niet werkt. Tenzij je die docker containers door iedereen wil laten op starten, maar dat denk ik nu niet.
Daarnaast gebruik ik trouwens bijna nooit else statements.
"Avoid else, return early." is een gouden regel in OO programming.