#!/bin/env php <?php /* I N S T A L L E R */ require("inc_vars.php"); require("inc_functions.php"); $gitAppmonitor="https://github.com/iml-it/appmonitor.git"; $spcUrl="https://dl.static-php.dev/static-php-cli/spc-bin/nightly/spc-$myos-$myarchitecture"; $doneBuild="__done_build-micro__".md5($php_version.$php_libs).".txt"; /* Filename Last Modified Size Download Count spc-linux-aarch64 2025-02-15 17:30:46 3.4M 451 spc-linux-aarch64.tar.gz 2025-02-15 17:30:46 3.3M 54 spc-linux-x86_64 2025-02-15 17:30:46 3.5M 937 spc-linux-x86_64.tar.gz 2025-02-15 17:30:46 3.3M 282 spc-macos-aarch64 2025-02-15 17:31:40 7.8M 669 spc-macos-aarch64.tar.gz 2025-02-15 17:31:38 3.8M 211 spc-macos-x86_64 2025-02-15 17:31:46 7.8M 463 spc-macos-x86_64.tar.gz 2025-02-15 17:31:45 3.9M 89 spc-windows-x64.exe 2025-02-15 17:30:46 3.9M 551 */ // ---------------------------------------------------------------------- // MAIN // ---------------------------------------------------------------------- echo " I N S T A L L E R - gets appmonitor sources - gets spc binary - spc downloads PHP and libs - spc builds micro (1..2 min) "; _chdir($selfdir); // ---------------------------------------------------------------------- _h1("External data dir"); if(!is_dir($dirExternal)){ mkdir($dirExternal, 0755, true); } if(!is_dir("$dirExternal/bin")){ mkdir("$dirExternal/bin", 0755, true); } _chdir("$selfdir/$dirExternal"); // ---------------------------------------------------------------------- _h1("Get / update Appmonitor repo"); if(!is_dir("appmonitor")){ _exec("git clone $gitAppmonitor"); } else { _chdir("$selfdir/$dirExternal/appmonitor"); _exec("git pull -f $gitAppmonitor"); } // ---------------------------------------------------------------------- _h1("Generate include file with all available checks..."); $incfile="$selfdir/src/include_checks.php"; _chdir("$selfdir/$dirExternal"); $out="<?php // This file was generated by // ".__FILE__." // at ".(date("Y-m-d H:i:s"))." // ----- appmonitor client classes require_once('../$dirExternal/appmonitor/public_html/client/classes/appmonitor-checks.class.php'); require_once('../$dirExternal/appmonitor/public_html/client/classes/appmonitor-client.class.php'); // ----- appmonitor checks "; foreach(glob("appmonitor/public_html/client/plugins/checks/*php") as $sFile){ $out.="require_once('../$dirExternal/$sFile');\n"; } if(file_put_contents($incfile, $out)){ echo "✅ OK $incfile was written\n"; } // ---------------------------------------------------------------------- _h1("Get / update spc"); _chdir("$selfdir/$dirExternal/bin"); if(!file_exists("spc")){ _exec("wget -O spc '$spcUrl'"); } if (PHP_OS == "Linux") { _exec("chmod +x spc"); } // ---------------------------------------------------------------------- _h1("Spc - prepare environment"); if(!file_exists("$doneBuild")){ _exec("./spc --no-interaction doctor"); _exec("./spc download --no-interaction --with-php=$php_version --for-extensions '$php_libs'"); echo "Hint: this can take 2 minutes ...\n"; _exec("./spc build --no-interaction --build-micro '$php_libs'"); touch("$doneBuild"); } else { echo "Micro already built - php $php_version - extensions '$php_libs'\n"; } _h1("Done.");