Откройте MySQL медленный журнал запросов с PHP

0

У меня возникли проблемы с открытием 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

Теги:

5 ответов

1
Лучший ответ

Предполагаю, что пользователь, который работает php, не является тем же или не находится в той же группе, что и владелец файла журнала.

Вы можете попробовать изменить владельца файла журнала, но это может помешать mysql получить разрешение на его запись.

Можете ли вы прочитать файл с fopen?

  • 0
    С разрешениями 777 владелец файла и пользователь / группа PHP не должны иметь значения.
  • 0
    Правильно, но есть очевидные последствия для безопасности
2

Также убедитесь, что каталог /var/log/mysql имеет хотя бы разрешение на выполнение (711) для пользователя вашего веб-сервера, я считаю, что по умолчанию он установлен в Ubuntu.

1

Вы попробовали 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";
} 
0

Попробуйте этот код:

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;
    }
}
?>
0

Добавьте пользователя в команду 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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню