PHP shell_exec whois command geen output
Code (php)
1
2
2
$exp = shell_exec('whois domeinmetexp_date.net | grep Expiry');
echo "<pre>".$exp."</pre>";
echo "<pre>".$exp."</pre>";
Wat ik ook probeer er komt geen output.
Ik draait php 8.1
centos 8.
Ik snap niet dat alleen ik dit kan krijgen.
Als ik het commando via de CLI uitvoer, werkt het perfect, maar krijg niks in php terug.
Toevoeging op 23/10/2022 08:51:26:
Shell_exec is verwijderd uit php.ini
Toevoeging op 23/10/2022 09:19:48:
Als ik andere commande's als:
Invoer, dan krijg ik wel :
Returned with status 0 and output: Array ( [0] => PHP 8.1.10 (cli) (built: Sep 12 2022 05:52:28) (NTS) [1] => Copyright (c) The PHP Group [2] => Zend Engine v4.1.10, Copyright (c) Zend Technologies )
En whois werkt nogmaals gewoon goed in de command line. Wat kan hier nu fout zijn?
Edit:
In je voorbeeld gebruik je een .net-domein. De .net-registry maakt gebruik van de "Registrar Registration Expiration Date" in plaats van de "Registry Expiry Date". Greppen op "Expir" zou in dat geval wellicht een handige optie kunnen zijn.
Gewijzigd op 29/10/2022 00:40:55 door Willem vp
Bijvoorbeeld /usr/bin/whois
Jouw commando wordt uitgevoerd in een lege shell. En dus wordt er niet een path variabele gevuld met plekken waar standaard gezocht wordt naar een commando (een commando is meestal een programma dat uitgevoerd wordt).
Je vindt het juiste path door zelf in je shell in te kloppen
* als jij zelf inlogt in een shell dan wordt automatisch een script uitgevoerd met een aantal settings. Bijvoorbeeld de kleur van je prompt, aliasses en ook je path-variabele.
Dat kan per user verschillen en voor php en crontab kan dat ook zo maar leeg zijn.
Daarnaast kan een instinker zijn (niet in jouw geval) dat het script vanaf een ongedefinieerde plek uitgevoerd wordt.
Dus dat je in een heel andere directory staat dan /home/daniel/ bijvoorbeeld
Bij een standaaard installatie van PHP onder CentOS 8 (ik heb het niet gecheckt voor andere distributies) wordt $PATH van user root overgenomen voor gebruik door shell-escapes en hoeft voor de standaard Unix-commando's dus niet het absolute pad gebruikt te worden. Uiteraard kan dit nog afhankelijk zijn van instellingen in php.ini of configuraties waarbij PHP in een jail draait.
Je gaat nu direct op zoek naar een stuk met een Exp datum, maar die wordt niet gevonden. In dat geval is het interessant om te zien wat er dan wél terug komt: Een melding over verkeerde parameter, niet gevonden "whois", of dat je ziet dat de gezochte term een kleine letter E heeft bijvoorbeeld.