File Diagnosis without delete:
PHP
<?php
declare(strict_types=1);
$files = [
'/path/to/file1.php',
'/path/to/file2.php',
];
function runCmd(string $cmd): array {
$output = [];
$code = 0;
exec($cmd . ' 2>&1', $output, $code);
return ['code' => $code, 'output' => implode("\n", $output)];
}
header('Content-Type: text/plain; charset=utf-8');
foreach ($files as $file) {
echo "=== $file ===\n";
if (str_contains($file, "\0")) {
echo "Invalid path\n\n";
continue;
}
$exists = file_exists($file);
echo "exists: " . ($exists ? 'yes' : 'no') . "\n";
if (!$exists) {
echo "\n";
continue;
}
clearstatcache(true, $file);
echo "is_file: " . (is_file($file) ? 'yes' : 'no') . "\n";
echo "is_writable: " . (is_writable($file) ? 'yes' : 'no') . "\n";
echo "owner_uid: " . @fileowner($file) . "\n";
echo "group_gid: " . @filegroup($file) . "\n";
echo "perms_octal: " . substr(sprintf('%o', @fileperms($file)), -4) . "\n";
$quoted = escapeshellarg($file);
$ls = runCmd("ls -ld " . $quoted);
echo "ls -ld:\n" . $ls['output'] . "\n";
$lsattr = runCmd("lsattr -d " . $quoted);
echo "lsattr:\n" . $lsattr['output'] . "\n";
$stat = runCmd("stat " . $quoted);
echo "stat:\n" . $stat['output'] . "\n";
echo "\n";
}
Alles anzeigen