2017-09-22 1 views
0

Ich habe einen PHP-Daemon-Launcher (Ich führe ein unabhängiges [welches ein Argument an den Dämon übergeben wird] Skript durch exec()) und das Skript, dass dieser PHP-Daemon Läufe verwendet eine PDO wrapper, die ich auch gemacht habe.SQLSTATE [HY000] [2002] Keine solche Datei oder Verzeichnis - PHP Daemon

Die Sache ist, wenn ich das Skript über den PHP-Daemon ($ php) ausführen, kann mein PDO-Wrapper keine Verbindung und löst SQLSTATE[HY000] [2002] No such file or directory.

Die daemon_script.php enthält #!/usr/bin/php vor dem <?php Eröffnungstag.

Jetzt habe ich hier seit gestern gesucht und ein paar Ansätze gefunden, aber keiner ist mein spezifischer Fall und schafft es nicht, es zum Laufen zu bringen, also dachte ich, dass Sie eine Idee auf haben würden, was ich bin falsch machen.

Vielen Dank im Voraus.

Verwendung:

  • PHP 7.0.21 (obwohl soll es mit PHP 5 implementieren)
  • MYSQL Ver 14.14 Distrib 5.6.34, für osx10.12 (x86_64)

der Daemonstart()Methode:

+0

Es kann keine Verbindung zu mysql herstellen. Stellen Sie sicher, dass mysql auf Ihrem Server läuft. – aynber

+0

@aynber Ich habe seit 3 ​​Tagen versucht, vertrau mir, alles funktioniert gut (PHP, PDO, MySQL). –

+0

Also sagen Sie, wenn Sie es über den Webserver laufen es funktioniert, aber nicht CLI? Wenn ja, wie unterscheiden sie sich? Ist/usr/bin/php das PHP, von dem Sie denken, dass es das ist? – ficuscr

Antwort

1

Sie müssen den vollständigen Pfad zu PHP in Ihrem Befehl festlegen, damit exec() es richtig findet. Da php in /opt/local/bin/php befindet, fügen Sie einfach es wie folgt aus:

$daemon_command = '/opt/local/bin/php '.$this->script.' > script.log 2>&1 & echo $! &'; 

Als Hinweis, cron arbeitet oft die gleiche Art und Weise, weil es nicht die gleichen PATH Variablen zuzugreifen ist, die ein Kommandozeilen-Benutzer tut.

Verwandte Themen