Создание и использование собственного файла php.ini (suPHP)
Любой пользователей может создать собственный файл php.ini и разместить его в папке вызываемого срипта.
Это довольно удобно, так как Вы можете самостоятельно редактировать свои настройки, без обращения в службу тех. поддержки
Если Вы решили положить php.ini где то в public_html, то создайте файл .htaccess в корневой папке сайта ( например /home/user/public_html ,где user ваш никнейм в cpanel) или если файл существует то только добавьте в любом месте (в начале или конце) в файл .htaccess директивы которые описанны ниже.
эти директивы запрещают просмотра файла php.ini посторонними.
При такой установке PHP в виде обработчика CGI, SuPHP, Вы не можете использовать в файле .htaccess следующие директивы : php_flag, php_admin_flag, php_value и прочих, которые изменяют какие-либо параметры PHP окружения это вызовет ошибку с кодом 500, Internal Server Error.
Внимание: собственный файл php.ini действителен только в пределах директории, в которой размещён, если не указана специальная опция, см. ниже.
т.е. в пишите эту строку в файл .htaccess перед кодом запрета просмотра файла php.ini, только замените user на свое имя пользователя.
Права доступа на файлы и папки:
644 — запись в файл разрешена (по умолчанию)
444 — запись в файл запрещена (только чтение и исполнение)
755 — права доступа на папки (по умолчанию, менять не требуется)
Обратите внимание — при правах доступа 644 запись разрешена только для скриптов которые запускаются в среде Вашего аккаунта. Никто другой запись произвести не сможет. Для ещё большего увлечения безопасности Вы можете сменить права доступа у файлов на 444 — в этом случае даже Ваши скрипты не смогут ничего записать в файлы, но это не обязательно.
Таким образом при установке скриптов не требуется менять права доступа, даже если в инструкции к скрипту написано что их нужно изменить. Просто пропускайте пункт смены прав доступа CHMOD.
Пример файла php.ini и описание некоторых его параметров:
; Синтаксис файла: «директива = значение»
; Знак комментария в php.ini — «;» (точка с запятой). Все, что находится в строке после «;» не воспринимается PHP
disable_functions = ; В целях безопасности, позволяет запретить выполнение указаных функций
max_execution_time = 30 ; Максимальное кол-во секунд исполнения скрипта
memory_limit = 16M ; Максимум оперативной памяти, которую может взять себе скрипт
error_reporting = E_ALL & ~E_NOTICE ; Показывать все ошибки, кроме замечаний
display_errors = On ; Вывод ошибок в браузер. Для облегчения отладки сценариев
variables_order = «EGPCS» ; Порядок, в котором PHP будет регистрировать перменные (E — встроенные переменные, G — GET переменные, P — POST переменные, C — Cookies, S — сессии). Отсутствие какой-либо из букв не позволит вам работать с соответствующими переменными
register_globals = On ; Возможность обращения к переменным, поступающим через GET/POST/Cookie/сессии, как к обычным переменным (например, «$переменная»)
post_max_size = 55M ; Максимальный объём данных который может быть принят
magic_quotes_gpc = On ; Включение автоматической обработки кавычек, поступающих через POST/GET/Cookie
file_uploads = On ; Разрешает загрузку файлов
;upload_tmp_dir = ; Каталог для временных закачанных файлов (не забудте создать этот каталог!)
upload_max_filesize = 5M ; Максимальный размер закачиваемого файла
session.save_handler = files ; Хранить данные сессий в файлах
session.save_path = /tmp ; Папка для хранения файлов сессий (не забудте создать этот каталог!)
session.use_cookies = 1 ; Использовать cookie в сессиях
session.name = PHPSESSID ; Исользовать в качестве имени сессии и сессионной cookie ID сессии
session.auto_start = 0 ; Запрет на инициализацию сессии при начале соединения
session.cookie_lifetime = 0 ; Время жизни сессионных cookie («0» — до закрытия окна браузера)
session.use_trans_sid = 1 ; ID сессии будут добавляться ко всем ссылкам на странице автоматически (если у пользователя отключены cookie)
; и много других параметров .
Внимание!: Данная информация не актуальна для наших серверов, управлять PHP.ini, т.е. настройками PHP и версией PHP, вы можете в CPanel в раздлеле Select PHP version ( Выбор PHP версии )
- 128 Пользователи нашли это полезным
Связанные статьи
Какой сервер MySQL указывать при установке движка?
При установки какого либо движка (CMS), потребуется указать хост (host) к подключению базы.
В какую директорию нужно загружать сайт ?
Когда вы зашли по FTP или открыли Диспетчер файлов в CPanel, то директория для загрузки вашего.
Как быстро загрузить сайт (файлы) на FTP
Всем известно что когда вы копируете много мелких файлов на FTP, или на своем компьютере, с.
При установке скрипта ShopScript Premium выдает ошибку
При установке скрипта Shop-Script PREMIUM выдает следующую ошибку:You have an error in your SQL.
Как посмотреть текущие настройки PHP ?
Для этого существует специальная функция phpinfo(). Создайте в директории ~/public_html файл.
Создание PDF-файлов с помощью PHP
PDF-файлы вполне могут быть лучшим форматом для распространения документов в Интернете. В сегодняшнем учебнике я покажу вам, как вы можете создавать PDF-файлы с помощью PHP. Давай сделаем это!
Начнем
Существует несколько методов, которые вы можете использовать для создания PDF-файлов с помощью PHP. Вы можете использовать библиотеку PDFlib, но это довольно дорого, по крайней мере, для коммерческой работы. Сегодня мы будем работать с библиотекой FPDF, которая бесплатна как для личного, так и для коммерческого использования, и совсем не сложная в работе.
Для начала перейдите на сайт FPDF и нажмите загрузки слева. Под всеми руководствами получите zip-архив версии 1.6 (хотя с момента последнего обновления прошло некоторое время, форумы на сайте все еще довольно активны). Разархивируйте файлы; все, что вам нужно из этой папки, это файл fpdf.php и каталог шрифтов.
Давайте сделаем например «Hello, World!». чтобы ускорить процесс. Конечно, первое, что вам нужно сделать, — подключить библиотеку; затем мы создаем новый экземпляр класса FPDF.
hello_world.php
require('fpdf/fpdf.php');
$pdf = new FPDF('P', 'pt', 'Letter');
Обратите внимание, что мы передали три значения конструктору FPDF; первое — ориентация нашей страницы; в нашем случае это портрет (вы также можете сделать «L’andscape»). Следующий параметр — тип единиц, который мы хотим использовать; мы выбираем точки, потому что это то, что будут измерять шрифты; мы могли бы выбрать mm, cm или in. Наконец, у нас есть формат бумаги, который мы, очевидно, обозначили буквой; мы могли бы установить его Legal, A3, A4 или A5. Все три из этих параметров являются опциональными, их значения по умолчанию (‘P’, ‘mm’, ‘A4’) .
Прежде чем мы начнем добавлять текст к вашему документу, нам нужно сделать две вещи: 1) добавить страницу в pdf и 2) установить шрифт.
$pdf->AddPage();
$pdf->SetFont('Arial', '', 12);
Вы также можете использовать AddPage всякий раз, когда хотите вставить разрыв страницы; сначала мы устанавливаем тип шрифта; это может быть один из встроенных семейств шрифтов (Courier, Helvetica/Arial, Times, Symbol или ZapfDingbats) или любой добавленный с помощью метода AddFont . Далее следует формат шрифта; мы установили наш как обычный, но мы могли бы сделать «B’old», «Italic», «U’nderline» или любую комбинацию из них («BUI»). Наконец, мы устанавливаем размер шрифта в точках.
Теперь мы готовы добавить текст. Весь текст, который вы пишете в PDF-файле, будет записан в ячейки.
$pdf->Cell(100, 16, "Hello, World!");
Так что же это делает? Первый параметр — ширина ячейки; вторая — высота. Конечно, третий — это текст для ячейки. Есть еще немало других параметров, но сначала посмотрим, как это выглядит. Чтобы закончить PDF, давайте используем метод output.
$pdf->Output();
Мы могли бы передать этому методу два параметра, но на данный момент мы их просто оставим. Теперь, когда это произойдет, PDF-файл будет отображаться при посещении страницы. Итак, давайте сделаем это прямо сейчас! Вот что я получаю:
Отличная работа! Вы создали свой первый PDF-файл. Вернемся к строке, которая создала текстовую ячейку и внесем изменения:
$pdf->Cell(100, 16, "Hello, World!", 1);
Мы добавили четвертый параметр; это граница. В нашем случае мы поставили границу вокруг. Вы можете сделать частичную границу со строкой: «LB» добавит границы слева и внизу; «TLBR» — это то же самое, что и 1.
Если вы перезагрузите страницу сейчас и обнаружите, что ничего не произошло, просто добавьте случайную строку запроса в URL-адрес, чтобы принудительно обновить содержимое.
В скором времени мы создадим небольшой скрипт для создания новых файлов, но давайте посмотрим, как сначала установить несколько дополнительных параметров.
Полный скринкаст

SetFillColor / SetTextColor
Вы можете заполнять текстовые ячейки цветом фона; мы увидим, как это сделать в нашем приложении, но сначала вы должны установить цвет заливки. Просто передайте этой функции значения красного, зеленого и синего (от 0 до 255). Вы можете установить цвет текста таким же образом.
$pdf->SetFillColor(36, 96, 84);
$pdf->SetTextColor(255);
Если вы хотите установить все три цвета в одно и то же значение, просто используйте один параметр.
SetLineWidth
При рисовании границы на ячейках нетрудно настроить ширину границы. Просто назовите этот метод, передав число с плавающей точкой; помните, что вы установили единицы измерения, когда вы создали экземпляр FPDF. Когда вы начинаете, границы имеют ширину 0,2 мм.
$pdf->SetLineWidth(1);
SetAuthor / SetTitle / SetSubject / SetCreator / SetKeywords
Эти методы предназначены для установки свойств PDF, метаданных. Каждый из них берет строку с соответствующим контентом. Они также могут взять необязательное логическое значение, которое определяет кодировку: true — это UTF-8, а false — ISO-8859-1.
$pdf->SetAuthor("Collis and Cyan Ta'eed");
$pdf->SetTitle("How to be a Rockstar Freelancer");
$pdf->SetSubject("Freelancing");
$pdf->SetKeywords("Freelance Brand Project Contract Marketing Clients");
$pdf->SetCreator("EnvatoEdit"); // creator is usually the application that generated the PDF
SetMargins / SetTopMargin / SetLeftMargin / SetRightMargin
По умолчанию поля вашей страницы составляют 1 см. Вы можете установить верхнее, левое и правое поля отдельно с их соответствующими функциями или установить их все сразу.
$pdf->SetMargins(40, 35, 20);
// is eqaul to
$pdf->SetTopMargins(40);
$pdf->SetLeftMargin(35);
$pdf->SetRightMargin(20);
Но как насчет нижней границы? Я рад, что вы спросили, о чем позаботилась другая функция.
SetAutoPageBreak
Эта функция принимает логическое значение, определяя, хотите ли вы, чтобы библиотека добавляла разрыв страницы при необходимости или вы хотите сделать это вручную. Если значение равно true (по умолчанию), вы можете добавить второй параметр, определяющий, как близко вы хотите получить разрыв. По умолчанию это 2 см.
$pdf->SetAutoPageBreak(false); // I'll have to add page breaks myself
$pdf->SetAutoPageBreak(true, 40); // Pages with auto-break, with a bottom margin of 40 pts.
Создание чека
Теперь, когда у нас есть понимание того, как создать PDF-файл, давайте начнем наше небольшое приложение. Мы начнем с создания HTML-формы. Когда пользователь нажимает «Отправить», мы берем значения из формы и используем их для создания квитанции для нашего клиента.
Прежде всего, небольшая оболочка HTML:
charset='utf-8' />
Invoice Form
rel="stylesheet" href="style.css" />
id="wrap">
Checkout
method="post" action="create_reciept.php">
Вы можете видеть, что мы создали форму, которая будет отправляться в файл create_reciept.php , который мы сделаем в ближайшее время. Давайте добавим набор полей и заполним его элементом для личной информации нашего клиента.
index.html
Personal Information
class="col">
for="name">Name
type="text" name="name" value="John Doe" />
for="email">Email Address
type="text" name="email" value="joh@doe.com" />
class="col">
for="address">Address
type="text" name="address" value="123 Main Street" />
for="city">City
type="text" name="city" value="Toronto" />
for="province">Province
type="text" name="province" value="Ontario" />
for="postal_code">Postal Code
type="text" name="postal_code" value="A1B 2C3" />
for="country">Country type="text" name="country" value="Canada" />
Обратите внимание на две вещи: мы увидим стиль для .col , когда мы перейдем к CSS; это позволит нам упорядочить эти поля в двух столбцах. Во-вторых, я дал все значения инпутам, просто чтобы сэкономить потом время.
Мы добавим еще один набор полей для продуктов, которые покупает пользователь:
Purchases
Product Price
type='text' value='a neat product' name='product[]' />
$ type='text' value='10.00' name='price[]' />
type='text' value='something else cool' name='product[]' />
$ type='text' value='9.99' name='price[]' />
type='text' value='buy this too!' name='product[]' />
$ type='text' value='17.85' name='price[]' />
type='text' value='And finally this' name='product[]' />
$ type='text' value='5.67' name='price[]' />
Я думаю, что информация, которую мы показываем здесь, подходит для таблицы, так что это то, что мы используем. Кроме того, я поставил набор квадратных скобок в конце имен инпутов; обратите внимание, что у нас есть набор инпутом с именем product[] и набор с именем price[] . Они будут размещены как массивы.
Конечно, наша форма заканчивается кнопкой отправки.
type="submit">Submit Order
Теперь мы можем перейти к CSS. Мы не будем подробно останавливаться на этом, но здесь совсем не сложно. Вы можете поместить его в style.css , который мы используем в HTML.
style.css
body
font: 13px/1.5 'Helvetica Neue', Arial, 'Liberation Sans', FreeSans, sans-serif; /* 960.gs */
background:#ececec;
width:50%;
float:left;
fieldset
border:1px solid #474747;
-moz-border-radius:5px;
-webkit-border-radius:5px;
margin-bottom:10px;
legend
background:#474747;
color:#fff;
padding:3px 15px;
-moz-border-radius:5px;
-webkit-border-radius:5px;
font-weight:bold;
#wrap
width:820px;
padding:20px;
margin:20px auto;
background:#fff;
border:1px solid #ccc;
-moz-border-radius:10px;
-webkit-border-radius:10px;
padding:2px;
label
display:inline-block;
width:100px;
font-weight:bold;
label:after
content: ":";
input
display:inline-block;
width:200px;
border:1px solid #ccc;
padding:5px;
margin:0;
-moz-border-radius:5px;
-webkit-border-radius:5px;
thead td
text-align:center;
font-weight:bold;
td + td > input
width:50px;
button
border:1px solid #474747;
background:#ccc;
-moz-border-radius:5px;
-webkit-border-radius:5px;
padding:10px;
margin:10px;
font-weight:bold;
font-size:200%;
button:hover
background:#ececec;
cursor:pointer;
Как вы можете видеть, мы придаем большинству элементов некоторый минималистский стиль. Вот как выглядит наша форма:

Таким образом, когда ваш клиент заполняет форму и нажимает кнопку отправки, данные формы будут отправлены на файл create_receipt.php . Итак, давайте создадим файл прямо сейчас!
Генератор чеков
Сейчас мы снова вернулись к PHP. Прежде всего: подключить библиотеку:
require('fpdf/fpdf.php');
Затем вместо создания экземпляра класса FPDF мы собираемся наследовать его на собственный класс. Это позволит нам сделать некоторые изящные вещи. Смотрите внимательно сейчас:
class PDF_reciept extends FPDF
function __construct ($orientation = 'P', $unit = 'pt', $format = 'Letter', $margin = 40)
$this->FPDF($orientation, $unit, $format);
$this->SetTopMargin($margin);
$this->SetLeftMargin($margin);
$this->SetRightMargin($margin);
$this->SetAutoPageBreak(true, $margin);
Мы начали свой новый класс, написав конструктор. Мы указали все значения параметров по умолчанию, поэтому наш конструктор можно вызвать и без них. Внутри функции мы вызываем конструктор родительского класса, а затем устанавливаем поля.
Теперь мы подключаемся к двум специальным функциям: Верхний и нижний колонтитулы.
function Header()
$this->SetFont('Arial', 'B', 20);
$this->SetFillColor(36, 96, 84);
$this->SetTextColor(225);
$this->Cell(0, 30, "Nettuts+ Online Store", 0, 1, 'C', true);
Эта функция будет вызываться в начале каждой страницы нашего PDF-файла. Сначала мы устанавливаем шрифт, цвет заливки и цвет текста. Затем мы выводим нашу ячейку. Обратите внимание, что мы установили ширину в 0. Это специальное значение; ячейка будет занимать все пространство справа от начальной точки (пока она не встретится с правым краем). Поскольку мы начинаем с левого поля, мы получим ячейку по всей ширине страницы (минус поля).
Теперь для функции нижнего колонтитула:
function Footer()
$this->SetFont('Arial', '', 12);
$this->SetTextColor(0);
$this->SetXY(0,-60);
$this->Cell(0, 20, "Thank you for shopping at Nettuts+!", 'T', 0, 'C');
Опять же, мы начинаем с установки цвета шрифта и текста; мы не можем быть уверены в том, какими будут эти значения, когда мы перейдем к заголовку, поэтому мы поставим их для уверенности. Затем мы устанавливаем координаты X и Y. Это устанавливает верхнюю левую угловую позицию нашей следующей ячейки. Мы устанавливаем X равным 0, просто чтобы убедиться, что находимся в начале строки. Устанавливаем Y в -60; отрицательное число относится к нижней части страницы, поэтому это устанавливает наш курсор на 60 пикселей выше нижней границы страницы.
Затем мы создаем ячейку; опять же, мы используем трюк 0-ширины; мы установили высоту 20pts. Мы устанавливаем текст, придаем ему верхнюю границу и центрируем. Готово!
Мы снова вернемся к нашему классу, но пока давайте начнем создавать квитанцию. Создав экземпляр нашего класса, добавив страницу и установив шрифт, мы можем перейти к делу.
$pdf = new PDF_receipt();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 12);
Первое, что мы сделаем, это перемещаем наш курсор; мы можем сделать это, используя метод SetY .
$pdf->SetY(100);
Это не перенесет нас вниз на 100 точек; это устанавливает 100 точек от верхней части страницы. Это не включает поля, поэтому мы на 30 пунктов ниже от нашего заголовка.
$pdf->Cell(100, 13, "Ordered By");
$pdf->SetFont('Arial, '');
$pdf->Cell(100, 13, $_POST['name']);
Начнем с создания ячейки шириной 100pt и 13pt с текстом «Ordered By». Затем мы удаляем шрифт, чтобы удалить полужирный шрифт. Затем мы создаем другую ячейку и передаем ей имя, которое мы получили от нашей формы. Конечно, в реальном проекте вы будете проверять эти значения перед их использованием.
Двигаясь дальше, мы добавим дату покупки:
$pdf->SetFont('Arial', 'B', 12);
$pdf->Cell(50, 13, 'Date');
$pdf->SetFont('Arial', '');
$pdf->Cell(100, 13, date('F j, Y'), 0, 1);
Опять же, мы устанавливаем шрифт жирным шрифтом; после записи «Дата» мы удаляем полужирный шрифт и печатаем текущую дату, используя функцию date PHP. Указанный формат даст нам название месяца, число дней, за которым следует запятая, и четырехзначный год. Мы помещаем границу как 0 (по умолчанию), чтобы мы могли перейти к параметру линии. Мы устанавливаем его как 1, что поместит нашу позицию в начало следующей строки; это эквивалент использованию «enter» в текстовом процессоре.
$pdf->SetX(140);
$pdf->SetFont('Arial', 'I');
$pdf->Cell(200, 15, $_POST['address'], 0, 2);
$pdf->Cell(200, 15, $_POST['city'] . ', ' . $_POST['province'], 0, 2);
$pdf->Cell(200, 15, $_POST['postal_code'] . ' ' . $_POST['country']);
$pdf->Ln(100);
Функция SetX выполняет ту же функцию, что и функция SetY , за исключением того, что она передвигает нас справа. Мы ставим нашу позицию на 100 пунктов справа от левого края. Затем мы выделяем курсив и начинаем выводить адрес. Все три строки адреса имеют ширину 200pt и высоту 15 футов. Важно отметить, что наш параметр линии равен 2. Это означает, что после каждой ячейки мы перейдем к следующей строке и «вкладке», чтобы соответствовать предыдущей ячейке. Наконец, мы вызываем метод Ln , который добавляет разрыв строки. Без параметра он будет перемещать нашу позицию вниз по высоте последней отпечатанной ячейки. Мы передали ему параметр, поэтому мы движемся вниз на 100 точек.
Вот как это выглядит сейчас:
image: adress / date
Теперь давайте распечатаем таблицу продуктов, приобретенных нашим клиентом.
$pdf->PriceTable($_POST['product'], $_POST['price']);
Мы передали их в двух массивах, которые мы получили из нашего HTML-файла. Но откуда этот метод PriceTable ? Мы собираемся сделать это прямо сейчас, в рамках нашего класса PDF_receipt . Это еще одно преимущество расширения класса: мы можем уместить потенциально трудоемкую функциональность в методе.
function PriceTable($products, $prices)$this->SetFont('Arial', 'B', 12);$this->SetTextColor(0);$this->SetFillColor(36, 140, 129);$this->SetLineWidth(1);$this->Cell(427, 25, "Item Description", 'LTR', 0, 'C', true);$this->Cell(100, 25, "Price", 'LTR', 1, 'C', true);$this->SetFont('Arial', '');$this->SetFillColor(238);$this->SetLineWidth(0.2);$fill = false;for ($i = 0; $i count($products); $i++)$this->Cell(427, 20, $products[$i], 1, 0, 'L', $fill);$this->Cell(100, 20, '$' . $prices[$i], 1, 1, 'R', $fill);$fill = !$fill;$this->SetX(367);$this->Cell(100, 20, "Total", 1);$this->Cell(100, 20, '$' . array_sum($prices), 1, 1, 'R');Вот функция. Начнем с установки шрифта, цвета текста, цвета заливки и ширины линии. Затем мы настраиваем ячейки заголовка. Каждая из них имеет границу слева, сверху и справа, текст по центру и заполнение.
Затем мы удалим «bold» с шрифта и сбросим цвет заливки и ширину линии. Мы также создаем переменную $fill , заданную как false. Мы будем использовать это, чтобы добавить чередование зебры к нашей таблице.
Цикл for-loop проходит через массив продуктов и цен (они должны иметь одинаковое количество элементов, основанное на таблице в нашем HTML-файле). Мы создаем ячейку для каждой записи, помещая имя продукта под заголовком «Описание элемента» и ценой в заголовке «Цена». У них обоих есть граница. Продукт выравнивается по левому краю, цена выравнивается по правому краю. Наконец, они оба используют $fill , который в настоящее время содержит false. После каждой строки мы переключаем значение $fill на противоположное логическое значение, поэтому в следующей строке будет серый фон.
После того, как мы выведем все покупки, мы хотим отобразить общую цену. Мы удалим наш курсор на 367pt с левого края страницы. Затем мы создаем ячейку «Total», и, наконец, мы используем функцию php array_sum для добавления всех цен в $price . И это цена таблицы!
Возвращаясь к тексту нашего PDF-документа, мы теперь пропустим 50 точек.
$pdf->Ln(50);До сих пор мы использовали функцию Cell для печати на нашей странице. Есть еще два метода, которые мы можем использовать: MultiCell и Write . Обе эти функции предназначены для строк текста, которые слишком длинные для одной ячейки полной ширины. Давайте сначала рассмотрим MultiCell .
MultiCell довольно похож на Cell , за исключением того, что когда он достигает ширины, указанной вами для ячейки, она создаст еще одну под ней и продолжит вывод. Он также сделает разрыв, когда достигнет "\n". Из-за этого ему не нужен параметр свойства линии. Он также не имеет параметра ссылки в отличие от Cell . Что? Мы еще не упоминали параметр ссылки? Итак, Cell может принять еще один параметр после параметра fill: это либо строка ссылки, либо объект ссылки, указывающий на другое место в PDF, созданное с помощью функции AddLink .
$message = "Thank you for ordering at the Nettuts+ online store. Our policy is to ship your materials within two business days of purchase. On all orders over $20.00, we offer free 2-3 day shipping. If you haven't received your items in 3 busines days, let us know and we'll reimburse you 5%.\n\nWe hope you enjoy the items you have purchased. If you have any questions, you can email us at the following email address:";$pdf->MultiCell(0, 15, $message);Текст не слишком важен, но слишком длинный для одной линии; плюс, в нем есть несколько разрывов строк. Хотя мы не используем их здесь, MultiCell также принимает параметры границ, выравнивания и заполнения.
Метод Write принимает только три параметра: высоту, текст и необязательную ссылку. Нет параметра ширины, потому что он перейдет на правый край, прежде чем будет разрыв линии. Хотя это не лучшее его использование, мы будем использовать его для добавления ссылки:
$pdf->SetFont('Arial', 'U', 12);
