Вопросы по языку PHP
Выдается ошибка “Syntax error, unexpected XXX in …”. Как ее решить?
Попробуйте еще раз залить указанный в ошибке файл на хостинг. Скорее всего он скопировался не до конца.
Как определить абсолютный путь к папке с Joomla
Это может понадобиться, если потерся файл configuration.php и вам надо заполнить переменную $mosConfig_absolute_path. Для этого создаем файл path.php в директории с joomla и пишем следующее
echo dirname(__FILE__);
?>
То, что выведет этот скрипт и будет абсолютным путем к joomla. Напоминаю, что слэша в конце этого пути не должно быть.
Я поставил компонент, а в нем возникают непонятные ошибки вроде "Notice: Undefined variable: xxx in yyy.php on line 123".
Во-первых, скорее всего, это не смертельно. Наиболее вероятно, что ничего страшного в этом нет. Это может означать, что автор скрипта забыл инициализировать переменную до ее использования. Во-вторых с этим можно бороться тремя способами:
- Написать автору компонента, что бы он исправил эту ошибку
- В файле .htaccess написать php_value error_reporting 0 (или php_flag error_reporting 0)
- В самом начале компонента (/components/com_xxx/xxx.php) или модуля (/modules/mod_xxx.php) добавить
error_reporting(0);
....
- Если вы имеет доступ к php.ini, то исправить параметр error_reporting:
error_reporting = E_ALL & ~E_NOTICE
Я получаю ошибку вида "XXX has been disabled for security reasons"
Эта ошибка означает, что ваш хостер запретил функцию XXX в настройках языка php. Точнее он запретил ее использование. Выхода из этой ситуации как бы и не существует, если вы не можете менять конфигурацию php. Можно попытаться написать в хостинговую компанию и получить разъяснения, почему та или иная функция у них запрещена. Если хостинг платный - можно смело обращаться, ибо на нормальных хостингах ничем таким особо не страдают.
Как вставить php-скрипт в Joomla
Надо оговориться, что вставить его можно различными способами:
- В текст статьи. Т.е. вы создаете статью и хотите что бы результат работы какого-либо php скрипта был вставлен в тело статьи. Для таких целей существуют мамботы вроде rd_addphp или iClude
- Если нужно вставить некий скрипт (например систему статистики посещений) который должен вызываться при каждом старте Joomla, то проще всего разместить вставку (чаще всего это оператор include или require) в ваш шаблон или непосредственно в самое начало index.php.
- Если вам нужно вставить скрипт как модуль, который можно перемещать как самый обычный модуль Joomla и управлять его видимостью, то просто вставив текст в редактор при создании модуля вы ничего не сделаете. Виртуальные, создаваемые пользователями в БД модули не исполяют никакого кода, они просто выводят текст. Для того, что бы реализовать этот вариант, надо:
- Сделать ваш скрипт модулем для Joomla. Руководства по созданию модулей находятся на этом же сайте.
- Использовать модуль mod_php, который интерпретирует через eval текст как код языка PHP.
Что такое safe mode? Как его выключить.
Safe Mode это специальный режим работы интерпретатора языка PHP. Старый и древний режим, который считается наиболее безопасным. Но эта безопасность налагает определенные, иногда очень серьезные ограничения на функционал. На Joomla эти ограничения сказываются хотя бы тем, что вам вряд ли удастся поставить компоненты или модули. Такого понятия как "выключить" на бесплатных хостингах не существует. На платных скорее всего вам разрешено иметь свой php.ini и параметром safe_mode можно управлять в этом файле. В любом случае об этом стоит спрашивать вашу хостинговую компанию. Более подробно написано на официальном сайте языка php
Ошибка: “Warning: Cannot modify header information - headers already sent by (output started at /xxxx/yyyy/xxx.php:222) in /aaaa/bbbb/ccc.php on line 444”
Эта ошибка означает, что в файле xxx.php какая-либо конструкция языка php что-то вывела, а в файле ccc.php кто-то пытается послать заголовки HTTP-ответа уже после этого. Но заголовки на то и заголовки, что бы выводиться ДО основного ответа, и в любой момент быть посланы не могут. Чаще всего решается перезаливкой файла xxx.php или полным расследованием вопроса "А чего же я это там намудрил". Вспомните что вы делали в последнее время, что исправляли, что ставили. Возможно дело в этом.
Зачем нужны сессии в php и что это такое
Сессии это специальный механизм языка php, который предназначен для хранения определенного массива данных ассоциированного с пользователем. Чаще всего используются при ведении пользовательских сессий после входа на сайт.
У меня возникает ошибка "URL file-access is disabled in the server configuration in /xxx/file.php on line ZZ"
Эта ошибка означает, что хостер запретил исходящие соединения в конфигурации сервера. Точнее запретил скачивать удаленные файлы посредством функций, вроде file или file_get_contents, языка PHP. Это может быть обусловлено либо тем, что он ограничивает всякую стороннюю сетевую активность приложений клиентов, либо пытается их защитить от дыр типа "remote file inclusion" в скриптах. В любом случае об этом стоит спросить именно у хостинговой компании.
Что делать если php не поддерживает библиотеку GD (GD image library)
- Если такое случилось у хостинговой компании, то это повод ее поменять или обратиться в службу поддержки с настойчивым требованием включить эту библиотеку.
- Если такое у вас дома на компьютере для тестирования и создания сайта, то есть предложение поставить Денвер и не мучиться с настройками php.
- Если денвер ставить не хочется - нужно в php.ini раскомментировать следующую строчку (естественно вы должны понимать что делаете):
extension=php_gd2.dll
Ошибка: "session_start(): open(/файл) failed: Permission denied (13) in /папка/administrator/index.php on line XX"
Данная ошибка вызывана тем, что на хостинге не правильно настроены сессии в языке PHP. Поэтому можно:
- Обратиться в службу поддержки и попросить все настроить за вас
- Создать папку для хранения файлов сессий самостоятельно и прописать ее в конфигурации PHP как папку для хранения сессий:
- Добавить данную строку, например, в файл configuration.php
ini_set("session.save_path", "/путь/к/вашей/новой/папке");
-
- Прописать .htaccess ту же самую настройку
php_value session.save_path /путь/к/вашей/новой/папке
-
- Настроить ее в вашем php.ini (если это доступно)
session.save_path = /путь/к/вашей/новой/папке
Ошибка: "session_write_close() [write failed: No space left on device (XX) in /папка/файл.php on line ZZ"
Данная ошибка решается или с вашей хостинговой копанией, или если вами. Означает она то, что выделенное вам дисковое пространство закончилось. Произойти это могло по разным причинам. Если вы израсходовали все выданное вам пространство, то стоит его очистить. Возможно скопилось много старых временных файлов. Если вы точно знаете, что ни при чем, то вопрос надо решать обращением в службу поддержки хостера.
Ошибка: Fatal error: Call to undefined function FFFFFFF_FFFFFF() in /xxx/zzz.php on line 123
Все очень просто. Данная ошибка означает, что в вашей сборке языка пхп нет поддержки функции FFFFFFF_FFFFFF. Иногда такое случается и потому могут быть не доступны следующие функции:
- preg_match - нет поддержки регулярных выражений
- session_start - нет поддержки сессий
Так как эти функции встроены в язык PHP, то их отсутствие может быть объяснено одной причиной - пхп на хостинге собран без их поддержки. Данный вопрос решается одним способом - обращением в хостинговую компанию
Ошибка: Fatal error: Maximum execution time of 30 seconds exceeded in xxx.php on line zzz
Эта ошибка означает, что на вашем хостинге установлен лимит на максимальное время работы одного пхп-скрипта. Чаще всего такого рода ошибки говорят о том, что произошло что-то действительно нехорошее. 30 секунд страница исполняться не может. Вариантов решения несколько:
- Поговорить с хостером на тему увеличения времени работы скрипта. Но не думаю, что они пойдут вам на встречу.
- Обновить директиву max_execution_time в php.ini и присвоить ей большее значение, например 1200 секунд. Этого точно должно хватить.
- В начале configuration.php написать set_time_limit(0);, отключив тем самым проверку времени работы скрипта.
Такие ошибки могут возникнуть, например, в случае запуска денвера с флэшки, когда доступ к файлам сильно замедлен возможностями флэш-памяти или во время установки действительно больших компонентов, когда разархивирование файла требует много ресурсов.
- Hits: 4082