У меня есть этот небольшой код для генерации изображений профиля со случайным цветом фона и первой буквой имени в виде текста над ним. Я использую этот код в течение многих лет, и он все еще отлично работает на xampp и многих других сайтах, но в одном особенном случае он не работает на сервере.
Изображение не сохраняется. Я проверил все каталоги имеют 755 разрешений. GD установлен и в журнале apache ошибок нет.
<?php
$name = 'Vipul Kapoor';
$id = 905;
$location = '';
$words = explode(" ", $name);
$countWords = count($words);
if($countWords >= 2){
$firstChars = $words[0][0].$words[$countWords-1][0];
}else{
$firstChars = "";
foreach ($words as $w)
{
$firstChars .= $w[0];
}
}
$alphaCount = strlen($firstChars);
$font = 'fonts/roboto/Roboto-Regular.ttf';
$imgName = $id.'-default.png';
$im = imagecreate(215, 215);
$background_color = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200));
$text_color = imagecolorallocate($im, 255, 255, 255);
if($alphaCount == 1) { imagettftext($im, 60, 0, 80, 132, $text_color, $font, $firstChars); }
if($alphaCount == 2) { imagettftext($im, 50, 0, 65, 132, $text_color, $font, $firstChars); }
if($location == ''){
imagepng($im, 'images/profile/'.$imgName);
}else{
imagepng($im, 'admin/img/avatar/'.$imgName);
}
imagedestroy($im);
Я видел похожие вопросы, и их решения не помогли. Как мне диагностировать проблему?
Редактировать: это не просто файлы изображений, но php не может создавать файлы вообще. Другие коды, которые генерируют CSV-файлы, также не работают. Кажется, php просто не может записывать файлы на этот сервер. Нет проблем с разрешением, я уверен в этом, поэтому есть некоторые проблемы с конфигурацией. Как мне добраться до корня проблемы?
Вариант 1: Вы можете получить доступ к папке с помощью. Тогда имя пользователя получит право собственности на эту папку.
sudo chown -R <username> /var/www
Вариант 2: вы можете изменить права доступа к папке
sudo chmod -R a+rwX /var/www
Вариант 3: или вы можете дать групповой доступ к папке
sudo groupadd www
sudo useradd -g <username> www
sudo chown -R :www /var/www
sudo chmod -R g+rwX /var/www
sudo chmod g+s /var/www
Документация: Вы можете узнать больше об этом в их руководстве к серверу:
https://help.ubuntu.com/lts/serverguide/serverguide.pdf
Других решений пока нет …