Во-первых, мои извинения, если это не работает.Потому что я мог только проверить их на WAMP.Где эта ошибка (по данным онлайн-исследования) не влияет.
1) Убедитесь, что imagedestroy($im);
2) Чтобы получитьпапки шрифтов для любой из платформ
<?php
function fontFolder() {
$osName = php_uname( 's' );
if (strtoupper(substr($osName, 0, 3)) === 'WIN') {
return '/Windows/Fonts/';
}
if (strtoupper(substr($osName, 0, 5)) === 'LINUX') {
return '/usr/share/fonts/truetype/';
}
if (strtoupper(substr($osName, 0, 7)) === 'FREEBSD') {
//This is not tested
return '/usr/share/fonts/truetype/';
}
}
echo fontFolder();
?>
* Обратите внимание, что этот список ОС не является полным, вам может потребоваться добавить / изменить его для своих нужд.
3) [НЕРЕКОМЕНДУЕТСЯ] Persudo- "Кэшировать" файлы шрифтов: и оставить кеш для очистки самостоятельно после первого запуска при перезагрузке сервера.Таким образом, пока шрифты блокируются, блокируется только копия кэша.Не настоящие рабочие файлы, с которыми вы «играете».Следовательно, это не влияет на ваш рабочий цикл.Файлы в конечном итоге удаляются, когда система перезагружается, и они «очищаются для удаления».
РЕДАКТИРОВАТЬ: Обратите внимание, что вы всегда можете указать папку на папку tmp вНастройка Linux, должна работать примерно так же.
<?php
/**
Recursive delete, with a 'file/folder igonore option'
[$ignoreArra] : An array or a single string, to ignore delete (folder or file)
[$ignoreRootFolder] : Ignores the starting root folder
**/
function recursiveDelete($str, $ignoreArray = null, $ignoreRootFolder = false){
if($str == '' || $str == '/') { //Prevent accidental 'worse case scenerios'
return false;
}
//Ensures it working as an array
if($ignoreArray == null) {
$ignoreArray = array(); //new Array
}
if(!is_array( $ignoreArray ) ) {
$ignoreArray = array( $ignoreArray );
}
if(is_file($str)){
if(in_array( $str, $ignoreArray ) ) {
return false;
} //else
return @unlink($str);
}
elseif(is_dir($str)){
$scan = glob(rtrim($str,'/').'/*');
$chk = true;
foreach($scan as $index=>$path) {
$buf = recursiveDelete($path, $ignoreArray);
if( $buf == false ) {
$chk = false;
}
}
if( in_array( $str, $ignoreArray ) || $chk == false || $ignoreRootFolder ) {
return false;
} else {
return @rmdir($str);
}
} else {
return false;
}
}
define('fontCacheFolder', './font_cache/');
function fontCache($fontFolder, $fontFile) {
$cachedFile = fontCacheFolder.$fontFile;
recursiveDelete( fontCacheFolder , $cachedFile , true);
if( is_file( $cachedFile ) ) {
return $cachedFile;
}
copy( $fontFolder.$fontFile, $cachedFile);
return $cachedFile;
}
echo fontCache('./', 'arial.ttf');
?>
4) ОБНОВЛЕНО: Просто оставьте все свои шрифты в одной папке и делайте только удаление того, что не нужно, до фактического /окончательное развертывание вашего сервера.=) Просто оставьте папку шрифтов в покое.
Пример структуры общего сервера.
www/root
+----- fonts
+----- app A
+----- site B
Следовательно, для любого веб-сайта / приложения, вложенного в корневую папку www, для доступа к папке общего шрифта просто используйте
'../fonts/fontName.ttf'
Следовательно, всякий раз, когда вы вносите изменения и обновления в приложение / сайт, вы избавляете от конфликтов конфликтов в шрифтах.