Произошла ошибка в сценарии «/usr/local/apache2/htdocs/read.php» в строке 197: только переменные должны передаваться по ссылке (строка 196 – это $ext = strtolower(array_pop(explode('.',$filename)));
)
if(!function_exists('mime_content_type')) { function mime_content_type($filename) { $mime_types = array( 'txt' => 'text/plain', 'htm' => 'text/html', 'html' => 'text/html', //ETC ); $ext = strtolower(array_pop(explode('.',$filename))); if (array_key_exists($ext, $mime_types)) { return $mime_types[$ext]; } elseif (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME); $mimetype = finfo_file($finfo, $filename); finfo_close($finfo); return $mimetype; } else { return 'application/octet-stream'; } } }
Я использую этот маленький скрипт из http://php.net/manual/en/function.mime-content-type.php , хотя я получаю фатальную ошибку, которую я не могу понять. Кто-нибудь, у кого есть опыт с этим, и пролил свет или указал мне в правильном направлении?
Вы должны сделать результат explode () переменной, прежде чем передавать ее
$var = explode('.',$filename); $ext = strtolower(array_pop($var));
Этот код передает результат функции array_pop
(значение) в array_pop
, но array_pop
ожидает переменную массива (по ссылке), а не значение. (Объявление &
в объявлении array_pop
сообщает нам, что оно ожидает принятия ссылки .)
Вы можете исправить это, используя переменную массива, чтобы сохранить результат explode
, а затем передать это в array_pop
.