2016-05-26 3 views
2

ich verwende diesen /usr/bin/php -q /home/user/public_html/cron.php und ich die Vorderseite der cron.php Datei var_dump(PHP_SAPI); es mir cgi-fcgi gibt, wenn ich von http Aufruf und wenn nannte es von ssh crontab zucalling/usr/bin/php von cPanel crontab gibt immer statt cgi-fcgi

ich diese Antwort sah https://stackoverflow.com/a/19917512/1377781 und änderte es den cron-Befehl /usr/bin/php5-cli -q /home/user/public_html/cron.php

und sein hat gut funktioniert, ist das richtig? Wird es auf allen Hosts funktionieren? und Umgebungen?

Antwort

0

Nicht unbedingt, nein.

Es gibt keine Garantie, dass jeder Host oder jede Umgebung den identischen binären Pfad und Namen für PHP hat. Genau wie ich MSWord.exe zu foobar.exe auf einem Windows-System umbenennen könnte, kann ich meine PHP-Binärdatei in foobar auf einem * nix-System umbenennen, egal.

Normalerweise (aber nicht immer) Ihre Binärdateien in /usr/bin und /usr/local/bin auf einem * nix-System gespeichert. So können Sie dort nachsehen (so etwas wie ls -lah /usr/bin/php* oder ls -lah /usr/local/bin/php*) und jede Binärdatei mit /path/to/binary/<binary name> -v überprüfen.

Zum Beispiel auf meinem lokalen Setup habe ich 20 verschiedene PHP-Binärdateien für 5 verschiedene SAPIs in /usr/bin und ein paar mehr in /usr/local/bin und einige mehr in /etc/php.

 
[email protected]:~$ ls /usr/bin/php* 

/usr/bin/php -> /etc/alternatives/php 
/usr/bin/phpize -> /etc/alternatives/phpize 
/usr/bin/phpize55 
/usr/bin/php55-mod -> /usr/lib/apache2/modules/libphp55.so 
/usr/bin/php55-fpm 
/usr/bin/php55-cli 
/usr/bin/php55-cgi 
/usr/bin/php55dbg 
/usr/bin/phpize56 
/usr/bin/php56-mod -> /usr/lib/apache2/modules/libphp56.so 
/usr/bin/php56-fpm 
/usr/bin/php56-cli 
/usr/bin/php56-cgi 
/usr/bin/php56dbg 
/usr/bin/phpize7 
/usr/bin/php7-mod -> /usr/lib/apache2/modules/libphp7.so 
/usr/bin/php7-fpm 
/usr/bin/php7-cli 
/usr/bin/php7-cgi 
/usr/bin/php7dbg 
/usr/bin/phpize71 
/usr/bin/php71-mod -> /usr/lib/apache2/modules/libphp71.so 
/usr/bin/php71-fpm 
/usr/bin/php71-cli 
/usr/bin/php71-cgi 
/usr/bin/php71dbg 

Also zwei Dinge zu beachten.

  1. Wenn er nicht den absoluten Pfad der ausführbaren Datei spezifiziert, müssen Sie berücksichtigen die $PATH Umgebungsvariable (dies von Benutzer zu Benutzer ändern kann).
  2. Wenn Sie den absoluten Pfad angeben, stellen Sie sicher, dass Sie zuerst die ausführbare Datei suchen. Nehmen Sie nicht blind an, dass es auf Konvention beruht. Es ist vielleicht nicht auf jedem System gleich.