Sau khi xem qua mã, tôi đã kết thúc ở chức năng này.
/**
* Gets all available MIME-types
*
* @access public
* @staticvar array mimetypes
* @return array array[mimetype], array[transformation]
*/
function PMA_getAvailableMIMEtypes()
{
static $stack = null;
if (null !== $stack) {
return $stack;
}
$stack = array();
$filestack = array();
$handle = opendir('./libraries/plugins/transformations');
if (! $handle) {
return $stack;
}
while ($file = readdir($handle)) {
$filestack[] = $file;
}
closedir($handle);
sort($filestack);
foreach ($filestack as $file) {
if (preg_match('|^.*_.*_.*\.class\.php$|', $file)) {
// File contains transformation functions.
$parts = explode('_', str_replace('.class.php', '', $file));
$mimetype = $parts[0] . "/" . $parts[1];
$stack['mimetype'][$mimetype] = $mimetype;
$stack['transformation'][] = $mimetype . ': ' . $parts[2];
$stack['transformation_file'][] = $file;
} elseif (preg_match('|^.*\.class.php$|', $file)) {
// File is a plain mimetype, no functions.
$base = str_replace('.class.php', '', $file);
if ($base != 'global') {
$mimetype = str_replace('_', '/', $base);
$stack['mimetype'][$mimetype] = $mimetype;
$stack['empty_mimetype'][$mimetype] = $mimetype;
}
}
}
return $stack;
}
Kỹ năng php của tôi còn hạn chế nhưng tôi có thể biết nó đang đọc qua các tệp trong thư mục plugin / chuyển đổi và trả lại các tên tệp đó cho các tập lệnh tham chiếu đến chức năng này. Khi tôi duyệt qua thư mục này từ một thiết bị đầu cuối, tôi nhận thấy rằng nó chứa đầy các tệp ._ được tạo bởi finder. Tôi sử dụng máy mac để thực hiện quá trình phát triển của mình và tôi đã lấy bản sao phpmyadmin mới nhất này bằng cách sử dụng công cụ tìm thay vì wget, vì vậy tất cả các tệp ._ này đã được tạo. Có điều gì đó về chúng đã làm hỏng chức năng này và khi tôi xóa chúng bằng lệnh tìm ở cấp cơ sở, mọi thứ đều hoạt động như dự định. Đây là lệnh find cho bất kỳ ai gặp phải vấn đề tương tự:
find . -type f -name '._*' -exec rm {} \;
Một lần nữa, hãy chạy điều đó ở cấp cơ sở của thư mục phpmyadmin và tất cả đều ổn.