簡體   English   中英

使用PHP打開MySQL慢查詢日志

[英]Open MySQL slow query log with PHP

我無法使用PHP打開MySQL的慢查詢日志。 我正在編寫調試器,並嘗試使用日志文件,但這給了我一個權限被拒絕的消息。

碼:

$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

還要確保目錄/var/log/mysql至少對您的Web服務器用戶具有執行權限(711),我相信在Ubuntu中默認為700。

大概我想說的是,正在運行php的用戶與日志文件的所有者不同或不在同一組中。

您可以嘗試更改日志文件的所有者,但這可能會阻止mysql具有寫日志文件的權限。

可以用fopen讀取文件嗎?

你嘗試過波彭嗎?

$fp=popen("cat /var/log/mysql/mysql-slow.log","r");
while (!feof($fp)) {
    $buffer = fgets($fp, 4096);
    $croninf .= '<tr><td>' . $buffer . '</td></tr>' . "\n";
} 

將用戶添加到adm 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);

試試這個代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM