Я работаю над сценарием, который заменяет все файлы в каталоге и подкаталогах одной строкой, чтобы избавиться от общего сообщения об ошибке, отображаемого нашим программным обеспечением.
Я сделал это довольно легко со всемифайлы в одном каталоге, но затем мы запустили его в папке с подкаталогами, и, как вы можете догадаться, это породило много ошибок.Я полностью забыл о подкаталогах.
Так что теперь я делаю скрипт, который работает с подкаталогами, но я в тупике.
Вот мой код:
<?php
$files = explode("\n", shell_exec('ls'));
$count = 0;
foreach ($files as $file)
{
if (empty($file) || $file == $_SERVER['SCRIPT_NAME'])
{
continue;
}
if (is_dir($file))
{
echo "Copying to {$file}/{$_SERVER['SCRIPT_NAME']}\n";
copy($_SERVER['SCRIPT_NAME'], $file . "/" . $_SERVER['SCRIPT_NAME']);
exec("php {$file}/{$_SERVER['SCRIPT_NAME']}");
unlink($file . "/" . $_SERVER['SCRIPT_NAME']);
continue;
}
$fh = fopen($file, 'w');
fwrite($fh, '<!-- Generated %T by %h (%s) -->');
fclose($fh);
echo "Rewrote {$file}\n";
$count++;
}
echo "Finished. Rewrote {$count} files. Don't forget to delete {$_SERVER['SCRIPT_NAME']}.\n";
?>
В итоге получается вывод:
[root@proxy1 orgytest]# php p.php
Rewrote blah
Rewrote dfas
Rewrote dfasfsdjkfjsa
Rewrote dfdsafdsaf
Rewrote dfsaf
Rewrote orgy
Rewrote query
Rewrote scsew
Copying to test/p.php
Rewrote blah
Rewrote dfas
Rewrote dfasfsdjkfjsa
Rewrote dfdsafdsaf
Rewrote dfsaf
Rewrote orgy
Rewrote p.php
Rewrote query
Rewrote scsew
Copying to test/test/p.php
PHP Warning: copy(test/test/p.php): failed to open stream: No such file or directory in /root/orgytest/test/p.php on line 15
Could not open input file: test/test/p.php
PHP Warning: unlink(test/test/p.php): No such file or directory in /root/orgytest/test/p.php on line 17
Copying to test2/test/p.php
PHP Warning: copy(test2/test/p.php): failed to open stream: No such file or directory in /root/orgytest/test/p.php on line 15
Could not open input file: test2/test/p.php
PHP Warning: unlink(test2/test/p.php): No such file or directory in /root/orgytest/test/p.php on line 17
Finished. Rewrote 9 files. Don't forget to delete test/p.php.
Copying to test2/p.php
<!-- Generated %T by %h (%s) -->Finished. Rewrote 8 files. Don't forget to delete p.php.
Что странно для меня, так это то, что он пытается делать что-то вроде test/test/p.php
, а не test/p.php
.Я предполагаю, что это как-то связано с тем фактом, что он запускается из более высокого каталога, когда достигает этой точки.
Кто-нибудь знает, как я могу это исправить?