Типичные ошибки начинающих.

Самые популярные товары с Али по лучшей цене:

Воздушный штопор 309 руб.
Аккумулятор АА 2200 mAh 8 шт 1079 руб.
Автомобильный диагностический сканер 610 руб.

Типовые ошибки, которые Вас могут (и будут) нещадно терзать.

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

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

Мало кто догадывается и взять сам варнинг за уши, и показать его Гуглу, ежели такой перевод не принёс понимания. Ребята, абсолютно со всеми ошибками, с которыми Вам суждено столкнуться в этой жизни, кто-то уже имел дело, много думал по их поводу, и нашёл им объяснение.

Оно таково:

  1. Если на экран лезет Unable to read XXX bytes in YYY on line 0, то это означает, что указанный файл YYY не может прочитаться, так как он бинарный, но уложен на хост в текстовой моде. Почему-то.

  2. Warning: function(XXX) ... failed to open stream: Permission denied in YYY on line ZZZ рассказывает, что функция function (может быть любой функцией РНР для операций чтения-записи и перемещения-копирования файлов) испытывает проблемы с правами доступа к файлу данных XXX, поработать с которым велено исполняемому файлу YYY его строкой ZZZ.

    При этом не надо домогаться до исполняемого файла YYY, пытаться залезть в него и покопаться там в строке ZZZ. Нужно просто дать чётко оговоренные инструкцией по заливке скрипта на сервер права доступа файлу данных XXX, если он имеется в комплекте поставки, или его папке, если в комплекте поставки скрипта файла данных нет, и он должен сам родиться на сервере.

C правами и модами разобрались - читайте маны, и будет Вам счастье.

Что следует знать при переносе сайта и его составляющих:

Теперь следует рассмотреть ситуацию, когда на хосте всё прекрасно работало какое-то время, а потом что-то вдруг резко случилось, и интерпретатору РНР неожиданно приспичило начать ругаться фразами, подсвеченными выше по тексту красным цветом, а также многими другими не менее затейливыми и ещё более непонятными.

Причина та же.

Хостер в целях выравнивания нагрузки на свои сервера перетащил Ваш сайт на другой сервер, поубивав при этом права доступа. Либо хостер вообще уронил сервер с частичной потерей контента, экстренно восстановив сайты из бэкапа, с сопутствующей потерей тех же самых несчастных прав доступа. Либо Вы сами потащили сайт с одного сервера на другой, но не подумали, что при этом слетят какие-то там права доступа, как, впрочем, и мода файлов. Либо Вы засунули на сервер какой-то файл данных, не выставив ему должные права доступа... И так далее.

Чего делать?

Основная Мантра жителя под юниксообразными операционками (да, это их причуды) гласит:

  1. При переносе сайта сначала ставятся все права доступа по мануалу.
  2. Далее все папки, рожденные скриптом, должны обрести права 777
  3. Все файлы, рожденные скриптом, обязаны встать под права 666

    Рожденное- это то, чего нет в дистрибутиве, но имеется на хосте.

Пожалуйста, понимайте правильно эту Мантру.

Если Вы засунули дистрибутив на Денвер, настроили под ним сайт, подредактировали дизайн, заложили в сайт контент, а потом переместили всё это на сервер, то в силу вступает Мантра. Уважайте её.

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

Проблемы с овнером как частный случай.

Овнер - это хозяин файла в юниксообразных операционках.
Грубо говоря, может быть либо Юзером, либо Апачем.

Если Вы берёте с хоста какой-то файл данных, чтобы в нём чего-нибудь подправить, разумно замечая, под какими правами доступа он стоит, а потом замещаете оригинальный файл отредактированным, с простановкой файлику точно тех же самых прав доступа, скажем, 644, то после такой вроде бы корректной подмены скрипт перестаёт работать. Почему?

Потому, что если файл данных, по терминологии Мантры, родился на месте, овнером его будет Апач. И прав доступа 644 скрипту будет совершенно достаточно. Но при подмене файлика его овнером станет Юзер, и скрипт уже не сможет получить полноценный доступ к файлу, стоящему под правами 644, но овнером Юзер.

В соответствии с Мантрой, замещённому файлику придётся дать права доступа как минимум 666. И таки делайте это.

Более доступно вся эта казуистика изложена в статье "Вуду вебмастера" - настоятельно рекомендуется.