Я использую простую файловую операцию на PHP для редактирования файла конфигурации сетевого интерфейса в CentOS 6.7 (/ etc / sysconfig / network-scripts / ifcfg-eth0
), после изменения любого значения и сохранения в файле конфигурации и попытаться перезапустить сетевой интерфейс, я получаю эту ошибку:
does not seem to be present, delaying initialization.
[FAILED]
мой код PHP это:
<?php
// configuration
$file = '/etc/sysconfig/network-scripts/ifcfg-eth0';
// check if form has been submitted
if (isset($_POST['text']))
{
// save the text contents
file_put_contents($file, $_POST['text']);
// redirect to form again
header('Location: network.php');
exit();
}
// read the textfile
$text = file_get_contents($file);
?>
<!-- HTML form -->
<form action="" method="post">
<textarea style="width:50%; height:50%;" name="text"><?php echo htmlspecialchars($text) ?></textarea>
<input type="submit" />
<input type="reset" />
</form>
Мне нужно вручную вызвать сетевой сценарий с помощью настройки команды и внести изменения в настройки устройства и сохранить их, после чего я смогу перезапустить сетевой интерфейс. Спасибо, если кто-нибудь поможет мне, почему эта проблема возникает, если я открою файл конфигурации и отредактирую его вручную, это не вызовет этой проблемы.
Скорее всего, имя пользователя, под которым работает сервер (по умолчанию apache
в большинстве дистрибутивов Red Hat) не имеет разрешения на запись в/etc/sysconfig/network-scripts/ifcfg-eth0
,
Вы должны проверить возвращаемые значения:
file_put_contents($file, $_POST['text']);
От http://php.net/manual/en/function.file-put-contents.php
Эта функция возвращает количество байтов, записанных в файл, или FALSE при ошибке.
Я предполагаю, что этот сценарий будет запускаться только вашими коллегами или доверенными лицами, поскольку нет подтверждения ввода пользователя. Отступ также сделает код PHP более читабельным.
Других решений пока нет …