.plist met PHP file uitvoeren werkt niet.

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • woutertjuh88
  • Registratie: Maart 2010
  • Laatst online: 05-10 16:52
Ik heb een Mac Mini draaien met OS X 10.9.5 en FileMaker Server 14.
Hier willen we elke nacht een backup van de databases van trekken en deze overschrijft de backup van de vorige dag.

Voor heen hadden we een FileMaker server 13 met OS X 10.9.2 draaien en daar draaide het onderstaande script probleemloos.

Wat het script doet: Elke nacht om 0:00 uur inloggen in FileMaker en maak een backup per mapje.
FileMaker draait gewoon door tijdens het proces.

Hieronder het script (/Library/LaunchDaemons/com.filemaker.backup.plist):
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.filemaker.backup</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/php</string>
<string>/Users/admin/backupfm.php</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StartOnMount</key>
<false/>
</dict>
</plist>
Php bestand: /Users/admin/backupfm.php
<?php
exec('fmsadmin list files -u admin -p WACHTWOORD',$files);
$basebackuppath = 'filemac:/Macintosh HD/Library/FileMaker Server/Data/Backups/';
foreach($files as $file){
$path = explode('/',$file);
$filenew = end($path);
$pathnew = prev($path);
exec( 'fmsadmin backup "'.$file.'" -d "'.$basebackuppath.$pathnew.'/" -u admin -p s0l01');
echo $file."\n";
}
?>
Voer ik het bestand van php normaal uit dan werkt deze, dus hier zit het probleem niet in:
/usr/bin/php /Users/admin/backupfm.php

Rechten van de bestanden:
-rw-r--r-- 1 root staff 398B 30 jun 11:28 /Users/admin/backupfm.php
-rw-r--r-- 1 root wheel 656B 30 jun 11:16 /Library/LaunchDaemons/com.filemaker.backup.plist


Wil ik de plist laden dan gebeurt er niks, ook niet in de Console:
launchctl load com.filemaker.backup.plist

Als ik kijk met het volgende commando (launchctl list | grep backup) of de plist draait krijg ik het volgende:
- 0 com.filemaker.backup
Lijkt er op dat deze geladen is, maar nu niet draait. Dit geeft hij ook aan op andere servers.


Wie weet wat er fout gaat?

-


Acties:
  • 0 Henk 'm!

  • AMFan
  • Registratie: Oktober 2002
  • Laatst online: 04-10 10:36
Ik weet niet precies wat er fout gaat maar met de volgende setup start het script probleemloos:

PHP:
1
2
3
4
5
6
7
#!/usr/bin/php
<?php

// Gaat er vanuit dat test.txt beschrijfbaar is...
$f = fopen('/Users/USERNAME/Desktop/test.txt', 'a');
fwrite($f, date('Y-m-d H:i') . ' Werkt' . PHP_EOL);
fclose($f);

XML:
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>nl.test</string>
        <key>Program</key>
        <string>/Users/USERNAME/Desktop/test.php</string>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>


De plist verwijst direct naar het script omdat ik het php script uitvoerbaar gemaakt heb:
  • Plaats op de eerste regel een verwijzing naar php. Bv, #!/usr/bin/php
  • Geef het script execute rechten: chmod +x test.php
Als ik vervolgens launchctl load nl.test.plist uitvoer, schrijft het script een entry in het log.