public static function checkWritable($filename, $optional = False, $template = False) { $basename = basename($filename); $failure = $optional ? 'blue' : 'red'; $status = $optional ? 'Optional' : 'Warning'; if (!file_exists($filename) && !$optional) { $fp = fopen($filename, 'w'); if ($fp) { if ($template !== False) { switch ($template) { case 'PHP': fwrite($fp, "<?php\n"); break; case 'JSON': fwrite($fp, CoreLocal::convertIniPhpToJson()); break; } } fclose($fp); } } if (!file_exists($filename)) { echo "<span style=\"color:{$failure};\"><b>{$status}</b>: {$basename} does not exist</span><br />"; if (!$optional) { echo "<b>Advice</b>: <div style=\"font-face:mono;background:#ccc;padding:8px;\">\n touch \"" . realpath(dirname($filename)) . "/" . basename($filename) . "\"<br />\n chown " . self::whoami() . " \"" . realpath(dirname($filename)) . "/" . basename($filename) . "\"</div>"; } } elseif (is_writable($filename)) { echo "<span style=\"color:green;\">{$basename} is writeable</span><br />"; } else { echo "<span style=\"color:red;\"><b>Warning</b>: {$basename} is not writeable</span><br />"; echo "<b>Advice</b>: <div style=\"font-face:mono;background:#ccc;padding:8px;\">\n chown " . self::whoami() . " \"" . realpath(dirname($filename)) . "/" . basename($filename) . "\"<br />\n chmod 600 \"" . realpath(dirname($filename)) . "/" . basename($filename) . "\"</div>"; } }