Nov
24
2011

Php get zip error message from error number

Php functions like zip_open return an error number if they fail. To get the corresponding error message from the error number , use the following function.


function zip_error_message($errno)
{
	// using constant name as a string to make this function PHP4 compatible
	$zipFileFunctionsErrors = array(
		'ZIPARCHIVE::ER_MULTIDISK' => 'Multi-disk zip archives not supported.',
		'ZIPARCHIVE::ER_RENAME' => 'Renaming temporary file failed.',
		'ZIPARCHIVE::ER_CLOSE' => 'Closing zip archive failed',
		'ZIPARCHIVE::ER_SEEK' => 'Seek error',
		'ZIPARCHIVE::ER_READ' => 'Read error',
		'ZIPARCHIVE::ER_WRITE' => 'Write error',
		'ZIPARCHIVE::ER_CRC' => 'CRC error',
		'ZIPARCHIVE::ER_ZIPCLOSED' => 'Containing zip archive was closed',
		'ZIPARCHIVE::ER_NOENT' => 'No such file.',
		'ZIPARCHIVE::ER_EXISTS' => 'File already exists',
		'ZIPARCHIVE::ER_OPEN' => 'Can\'t open file',
		'ZIPARCHIVE::ER_TMPOPEN' => 'Failure to create temporary file.',
		'ZIPARCHIVE::ER_ZLIB' => 'Zlib error',
		'ZIPARCHIVE::ER_MEMORY' => 'Memory allocation failure',
		'ZIPARCHIVE::ER_CHANGED' => 'Entry has been changed',
		'ZIPARCHIVE::ER_COMPNOTSUPP' => 'Compression method not supported.',
		'ZIPARCHIVE::ER_EOF' => 'Premature EOF',
		'ZIPARCHIVE::ER_INVAL' => 'Invalid argument',
		'ZIPARCHIVE::ER_NOZIP' => 'Not a zip archive',
		'ZIPARCHIVE::ER_INTERNAL' => 'Internal error',
		'ZIPARCHIVE::ER_INCONS' => 'Zip archive inconsistent',
		'ZIPARCHIVE::ER_REMOVE' => 'Can\'t remove file',
		'ZIPARCHIVE::ER_DELETED' => 'Entry has been deleted',
	);

	$error_message = 'unknown';

	foreach ($zipFileFunctionsErrors as $constName => $em)
  	{
		if( defined($constName) and constant($constName) === $errno )
		{
			$error_message = $em;
			break;
		}
  	}

	$message = 'Zip File Function error: '.$em;

	return $message;
}

The list of Zip constants is available here : http://php.net/manual/en/zip.constants.php

Popularity: 1% [?]

Leave a comment