У меня возникли проблемы с открытием MySQL медленного журнала запросов с PHP. Я пишу отладчик и пытаюсь войти в файл журнала, но он дал мне сообщение об отказе в разрешении.
код:
$log = file_get_contents('/var/log/mysql/mysql-slow.log');
Ответ (ошибка):
Warning: file_get_contents(...): failed to open stream: Permission denied ...
Я могу cat
удалить файл с терминала. Я обработал файл журнала до 0777 с тем же результатом. Не разрешена ли эта операция во время работы MySQL? Есть ли способы обойти это?
PHP5.2.10, Ubuntu 9.10, MySQL 5.1.37
Предполагаю, что пользователь, который работает php, не является тем же или не находится в той же группе, что и владелец файла журнала.
Вы можете попробовать изменить владельца файла журнала, но это может помешать mysql получить разрешение на его запись.
Можете ли вы прочитать файл с fopen?
Также убедитесь, что каталог /var/log/mysql
имеет хотя бы разрешение на выполнение (711) для пользователя вашего веб-сервера, я считаю, что по умолчанию он установлен в Ubuntu.
Вы попробовали popen?
$fp=popen("cat /var/log/mysql/mysql-slow.log","r");
while (!feof($fp)) {
$buffer = fgets($fp, 4096);
$croninf .= '<tr><td>' . $buffer . '</td></tr>' . "\n";
}
Попробуйте этот код:
chmod 777 /var/log/mysql/mysql-slow.log
<?php
$file = "/var/log/mysql/mysql-slow.log"; //local
$fp = fopen($file, "r");
if ($fp) {
while (($line = fgets($fp, 4096)) !== false) {
echo "<br/>" . $line;
}
}
?>
Добавьте пользователя в команду groupon linux shell
adduser www-data adm
предоставить разрешение файла 770 (полный доступ владельца и группы) и перезагрузить систему
chmod 770 /var/log/mysql/mysql-slow.log
reboot
затем прочитайте файл с php
$filename = '/var/log/mysql/mysql-slow.log';
$handle = fopen($filename, "r");
$icerik = fread($handle, filesize($filename));
fclose($handle);
print_r($icerik);