我正在调用get_file_extension()函数来返回文件类型:即jpg,gif等:
function get_file_extension( $file ) {
if( empty( $file ) ) {
return false;
} else {
// if goes well then good to go
$ext = pathinfo($file, PATHINFO_EXTENSION);
//var_dump($ext);
// return file extension
return $ext;
}
}
当我执行var_dump($ ext)时,文件类型被捕获但是$ ext没有从函数返回!
函数调用:
$filename = stripslashes( $_FILES['file']['name'] );
$ext = get_file_extension( $filename );
$ext = strtolower( $ext );
var_dump($ext);
如果我为$ ext执行var_dump(),它会正确保留扩展名,但是当我尝试使用以下命令验证扩展时:
if(( $ext != "jpg" ) && ( $ext != "jpeg" ) && ( $ext != "png" ) && ( $ext != "gif" ) ) {
$error = 'Unknown Image extension.';
return false;
}
错误消息未显示在屏幕上。
当我检查apache error_log时,我收到以下错误:
PHP Strict Standards: Only variables should be passed by reference
....与我的get_file_extension函数中的这一行有关:
$ext = substr(strrchr($file,'.'),1);
如果我使用PATHINFO,我会收到类似的错误:
$ext = pathinfo($file, PATHINFO_EXTENSION);
非常感谢任何帮助。
答案 0 :(得分:0)
PATHINFO_EXTENSION是更新的,但错误信息未显示的原因是因为$ error ='';没有在全球范围内定义。您也可以回复错误消息。