PHP: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
(Добавление модуля работы с DBF DBASE)
(Содержимое страницы заменено на «FAQ Работа с RAR архивами»)
Строка 1: Строка 1:
Буду записывать проблемы, с которыми я столкнулся и их решение
+
[[FAQ]]
==Настройки, которые я сделал при переходе на php 5.3==
+
[[Работа с RAR архивами]]
====/etc/php.ini====
 
<pre>log_errors = on
 
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
 
display_errors = on
 
post_max_size = 200M
 
upload_max_filesize = 200M
 
; Если не указать тайм зону, то будут сыпаться ошибки.
 
date.timezone = Europe/Moscow
 
; заремарить следующую строку, иначе письма будут терять поле FROM
 
;mail.add_x_header = On
 
</pre>
 
 
 
==FAQ==
 
===Вопрос===
 
Есть страничка на которой отмечается около 120 checkbox'ов. С помощью функции
 
<pre>print_r($_REQUEST);</pre>
 
просматриваю их состояние после ввода. Так вот вводится только 100 или 101 отмеченный чекбокс, остальные пропадают, те их нет в выводе, хотя тоже отмечены.<br>
 
====Ответ====
 
Отредактируйте строки в конфигурационном файле /etc/php.d/Z98_suhosin.ini
 
<pre>suhosin.request.max_vars 500
 
suhosin.post.max_vars 500</pre>
 
===Message: Function set_magic_quotes_runtime() is deprecated===
 
При переносе сервера, появилась ошибка '''Message: Function set_magic_quotes_runtime() is deprecated'''
 
====Решение====
 
Эта функция считается устаревшей в 5.3, а в 6.0 ее вообще не будет.
 
Один из вариантов. Поставить перед функцией '''set_magic_quotes_runtime()''' знак '''@'''.
 
===Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function===
 
При переносе сервера, появилась ошибка '''При переносе сервера, появилась ошибка '''Message: Function set_magic_quotes_runtime() is deprecated ...'''
 
====Решение====
 
В php.ini прописать
 
<pre>date.timezone = Europe/Moscow</pre>
 
===Как при подключении к MSSQL базе с кодировкой CP1251, а выводить данные в UTF8?===
 
При выводе данных из таблиц MSSQL все русские буквы стали знаками вопроса.
 
====Решение====
 
В php.ini установить переменную
 
<pre>mssql.charset = "UTF8"</pre>
 
===При выводе поля типа datetime, оно выводится уже форматированным===
 
При выводе поля типа datetime, оно выводится уже форматированным, а надо как есть.
 
====Решение====
 
В php.ini установить переменную
 
<pre>mssql.datetimeconvert = Off</pre>
 
===Добавление модуля работы с DBF DBASE===
 
DBASE ставится через PECL<br />
 
1. Ставим PEAR из репозиториев (если у вас его ещё нету)
 
<pre>sudo apt-get install php-pear</pre>
 
(тоже желательно):
 
<pre>sudo apt-get install php5-dev</pre>
 
3. теперь можно ставить pecl-библиотеки. Ставим нужную:
 
<pre>sudo pecl install dbase</pre>
 
4. Создаем файл /etc/php5/mods-available/dbase.ini
 
<pre>; configuration for php DBASE module
 
; priority=20
 
extension=dbase.so</pre>
 
5. Создаем ссылки, что бы модуль работали в APACHE и CLI
 
<pre>sudo  ln  -s /etc/php5/mods-available/dbase.ini /etc/php5/cli/conf.d/20-dbase.ini
 
sudo ln  -s /etc/php5/mods-available/dbase.ini /etc/php5/apache2/conf.d/20-dbase.ini</pre>
 
6. Перезапускаем apache
 
<pre>sudo service apache2 restart</pre>
 
 
 
===Знакомство с PEAR:: Spreadsheet_Excel_Writer (установка и устранение ошибок)===
 
====Установка====
 
<pre># apt-get install php-pear
 
# pear install -f OLE
 
# pear install -f Spreadsheet_Excel_Writer</pre>
 
 
 
====Документация====
 
#[http://phpclub.ru/detail/article/Excel_Writer Создание таблиц Excel средствами PHP]
 
#[http://pear.php.net/package/Spreadsheet_Excel_Writer/docs Документация]
 
====Устранение ошибок====
 
=====1. Вылезает ошибка:=====
 
<pre>Deprecated: Call-time pass-by-reference has been deprecated in /usr/share/pear/Spreadsheet/Excel/Writer/Worksheet.php on line 2490</pre>
 
Редактируем файл '''/usr/share/php/Spreadsheet/Excel/Writer/Worksheet.php''' строка 2489<br />
 
Было
 
<pre>$string=$header.$data;
 
$this->_append(&$string, true);</pre>
 
Стало<pre>$this->_append($header.$data, true);</pre>
 
Взято [http://pear.php.net/bugs/bug.php?id=19773&edit=12&patch=fix-call-time_pass-by-reference&revision=1359123571 тут]<br />
 
<br />
 
 
 
=====Ошибка открытия excel файла в office 2010 в w7 и w8'''.=====
 
Редактируем файл '''/usr/share/php/OLE/PPS/Root.php''' строка 623 :<br />
 
Было<pre>fwrite($FILE, pack("V", 1));</pre>
 
Стало<pre>fwrite($FILE, pack("V", $num_sb_blocks));</pre>
 
Взято [http://pear.php.net/bugs/bug.php?id=19284&edit=3 тут]
 

Версия 12:59, 9 ноября 2015