На главнуюКонтактыКарта сайта

Размещение PHP скриптов

Какое расширение должны иметь файлы скриптов на PHP?

Скрипты на PHP должны иметь расширение *.php

Проблема с кодировкой при занесении данных в базу MySQL

При занесении текстовых данных, содержащих символы кирилицы, в базу данных MySQL с помощью PHP-скрипта, желательно указать в скрипте, в какой кодировке данные должны сохраняться в базу данных. Такое указание осуществляется с помощью SQL-запроса:

SET NAMES кодировка

Кодировку необходимо указывать ту же, что используется в самой базе данных для хранения текста. Для того чтобы быть уверенным в том, какая именно кодировка используется в БД для хранения текста, желательно явно указывать эту кодировку при создании таблиц, в противном случае будет использована кодировка по умолчанию, установленная в настройках базы данных MySQL. Явное указание кодировки, в которой хранятся данные в таблице, осуществляется в момент создания таблицы с помощью SQL-запроса:

CREATE TABLE имяТаблицы (список полей) CHARACTER SET кодировка;

Обычно для хранения символов кирилицы (символов русского языка) используют кодировку UTF-8 (обозначается в MySQL как utf8) или windows-1251 (обозначаемое как cp1251).

Таким образом, для создания таблицы хранящей текст в кодировке UTF-8 надо использовать SQL-запрос:

CREATE TABLE имяТаблицы (список полей) CHARACTER SET utf8;

Для того, чтобы при соединении с БД MySQL из PHP-скрипта использовалась необходимая кодировка, сразу после установления соединения с базой необходимо отправить запрос с указанием какая именно кодировка будет использоваться при занесении/извлечении данных. Пример подобных действий для соединения с БД в которой данные хранятся в кодировке UTF-8 приведен ниже:

mysql_connect('localhost', 'логин', 'пароль');
mysql_select_db('имяБД');
mysql_query('SET NAMES utf8');

Почему функции работы со строками не работают с «русскими буквами»?

При обработке текстов, содержащих символы кирилицы («русские буквы»), с помощью функций: strToLower(), strToUpper(), preg_match() и т. п. в некоторых случаях может наблюдаться некорректная работа указанных функций. Собственно проблема возникает тогда, когда кодировка сайта отличается от кодировки, используемой PHP-интерпретатором по умолчанию.

На сегодняшний день наиболее популярной кодировкой является кодировка UTF-8, позволяющая в одном документе использовать символы различных языков, например сочетать символы кирилицы и греческие символы на одной странице. Однако для «старых» русскоязычных сайтов характерно использование кодировки windows-1251 (CP1251). В тех случаях когда сайт с кодировкой CP1251 запускается на web-сервере, использующем по умолчанию кодировку UTF-8, а вместе с web-сервером эту же кодировку по умолчанию будет использовать и PHP-интерпретатор, наблюдается некорректная работа некоторых функций PHP, используемых для обработки текста.

Решением возникающей проблемы является явное указание настроек локализации, в частности кодировок, которые должен использовать PHP-интерпретатор, которое производится с помощью функции setLocale().

Ниже приводится пример использования этой функции:

setLocale(LC_ALL, 'ru_RU.CP1251');
...
$text=strToUpper('Привет');
echo($text); //ПРИВЕТ

Почему мой скрипт не может создать файл или папку?

Для создания файлов или папок с помощью PHP-скриптов необходимо чтобы папка, в которой производится создание поддиректории или файла, имела необходимые права доступа.

Права, которые должна иметь папка в которой создаются поддиректории или файлы, должны разрешать чтение, запись и выполнение для группы.

Таким образом минимально необходимые права на папку, в которой ведется работа с файлами или директориями, должны выглядеть как 770 (rwx rwx ---), но обычно можно установить более «мягкие» права: 775 (rwx rwx r-x).

Установить необходимые права можно с помощью FTP-клиента (например FAR Manager) или через контрольную панель к Вашему сайту: cp.brim.ru.

В случае отсутствия необходимых прав на папку, в которой ведется работа с файлами или поддиректориями, возникает ошибка вида: «Permission denied in ...»

Как удалить файл или папку созданную PHP-скриптом?

При попытке удалить через FTP-клиент файл или папку, созданную с помощью PHP-скрипта, могут возникнуть затруднения.

Причиной проблем при удалении файлов или папок созданных скриптами обычно является отсутствие необходимых прав на это действие.

В таких случаях Вы всегда можете воспользоваться контрольной панелью cp.brim.ru для осуществления удаления программно созданных файлов и папок.

Чтобы файл или папка созданные PHP-скриптами удалялась с помощью FTP-клиента, скрипт, создающий такую папку или файл, должен был после создания дать права записи для группы на эту папку или файл.

Пример кода для создания папки с именем «testdir» в той директории где находится скрипт (у этой директории уже должны быть права 770 или 775):

$d='./testdir';
mkdir($d);
chmod($d, 0770);

Аналогично, если планируется удалять программно созданные файлы через FTP-клиент, необходимо программно назначать таким файлам права записи для группы (660 или 664):

$name='./testdir/myfile.txt';
$f=fopen($name,'a');
fwrite($f,'test message');
fclose($f);
chmod($name, 0660);

В документации по PHP можно найти более подробную информацию о работе функции chmod()

Можно ли включить register_globals?

По умолчанию настройка register_globals находится в состоянии Off для всех сайтов, но по запросу в службу технической поддержки, данная настройка может быть изменена на On для указанного сайта. При использовании в своих скриптах глобальных переменных следует учитывать, что безопасность сайта потенциально снижается, и при неаккуратном написании скриптов у злоумышленника появляется возможность выполнить несанкционированные действия, используя уязвимости в коде скриптов. В документации по PHP можно найти более подробную информацию о проблемах безопасности, связанных с настройкой register_globals.

Служба поддержки:
E-Mail: support@brim.ru
Тел.: (495) 517-70-64
Адрес:
115419, г. Москва,
ул. Орджоникидзе, д.11, стр.11,
бизнес-центр «АВС-Эстэйт»