Ich rufe ein PHP-Skript auf, wenn eine Webseite geladen wird. Es gibt jedoch einen Parameter, den das PHP-Skript ausführen muss (den ich normalerweise beim Testen des Skripts über die Befehlszeile übergebe).
Wie kann ich dieses Argument jedes Mal übergeben, wenn das Skript beim Laden der Seite ausgeführt wird?
php
parameters
Nick
quelle
quelle
Antworten:
Vermutlich übergeben Sie die Argumente in der Befehlszeile wie folgt:
... und dann im Skript folgendermaßen darauf zugreifen:
Wenn Sie Argumente über HTTP übergeben (Zugriff auf das Skript über das Web), müssen Sie die Abfragezeichenfolge verwenden und über das Superglobal $ _GET auf sie zugreifen:
Gehen Sie zu http://yourdomain.com/path/to/script.php?argument1=arg1&argument2=arg2
... und Zugang:
Wenn Sie möchten, dass das Skript unabhängig davon ausgeführt wird, von wo aus Sie es aufrufen (Befehlszeile oder vom Browser), benötigen Sie Folgendes:
BEARBEITEN: Wie von Cthulhu in den Kommentaren hervorgehoben, können Sie am direktesten testen, in welcher Umgebung Sie ausführen, indem Sie die Konstante PHP_SAPI verwenden . Ich habe den Code entsprechend aktualisiert:
quelle
empty($_GET)
.$_GET
ist ein vordefinierter Wert, daher bin ich mir ziemlich sicher, dass er immer festgelegt ist, aber leer, wenn keine GET-Parameter festgelegt sind.empty()
Gibtfalse
für leere Zeichenfolgen und Arrays zurück.$_GET
tatsächlich nicht festgelegt ist, wenn das Skript in einem Befehlszeilenkontext aufgerufen wird.empty()
Dies würde dazu führen, dass nach Befehlszeilenargumenten gesucht wird, wenn auf das Skript über das Web ohne Abfragezeichenfolge zugegriffen wird, wodurch mehr Benachrichtigungen ausgelöst werden.PHP_SAPI === 'cli'
..htaccess
ist eine Apache-Datei - Apache verarbeitet eingehende Anforderungen mit den Anweisungen in.htaccess
und ruft dann PHP auf, um die Antwort auf die Anforderung zu erstellen. Wenn Sie sich also in der Befehlszeile befinden,.htaccess
wird dies vollständig ignoriert. Wenn Sie über das Web auf ein Skript zugreifen und nach Erhalt der Anforderung neue Querystring-Argumente hinzufügen möchten, ist dies normalerweise erledigtmod_rewrite
. Wenn dies Ihre Frage nicht ausreichend beantwortet, empfehle ich Ihnen, eine brandneue Frage zu stellen.Wenn Sie möchten, dass das gesamte Skript ausgeführt wird, unabhängig davon, von wo aus Sie es aufrufen (Befehlszeile oder vom Browser), benötigen Sie Folgendes:
Von der Kommandozeile aus anrufen
chmod 755 /var/www/webroot/index.php
und verwendenVerwenden Sie zum Aufrufen über den Browser
quelle