Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
slavikua
Отправлено: 16 Октября, 2014 - 10:47:45
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Всем доброго времени суток!
Помогите пожалуйста разобраться, уже все глаза сломал Огорчение

Ошибка:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING in /home/----/public_html/----.com/cron/sitemap.php on line 28


Строка 28:
PHP:
скопировать код в буфер обмена
  1. if(preg_match('/<[Mm][Ee][Tt][Aa].*[Nn][Aa][Mm][Ee]=.?("|\'|).*[Rr][Oo][Bb][Oo][Tt][Ss].*?("|\'|).*?[Cc][Oo][Nn][Tt][Ee][Nn][Tt]=.*?("|\'|).*([Nn][Oo][Ff][Oo][Ll][Ll][Oo][Ww]|[Nn][Oo][Ii][Nn][Dd][Ee][Xx]|[Nn][Oo][Nn][Ee]).*?("|\'|).*>/',$content)){$content=NULL;}


Буду очень признателен за помощь Радость
 
 Top
Sail
Отправлено: 16 Октября, 2014 - 11:14:32
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




slavikua, однако, где-то до 28-й строки кода есть строка без закрывающих кавычек... или скобки не закрытые...
 
 Top
slavikua
Отправлено: 16 Октября, 2014 - 11:41:42
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Sail пишет:
slavikua, однако, где-то до 28-й строки кода есть строка без закрывающих кавычек... или скобки не закрытые...

Спасибо за ответ.
Пересмотрел код, исправил скобку (и правда перед этой строкой).
Теперь ошибка такая:
CODE (html):
скопировать код в буфер обмена
  1. Warning: file_get_contents(http://----.com): failed to open stream: HTTP request failed!  in /home/----/public_html/----.com/cron/sitemap.php on line 22
  2. Ошибка записи!

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

Скрипт (взят отсюда: http://makefuture.net/article/generator-karty-sajta-xml-php/):
PHP:
скопировать код в буфер обмена
  1. // Поможет при длительном выполнении скрипта
  2. set_time_limit(0);
  3. $host='----.com'; // Хост сайта
  4. $scheme='http://'; // http или https?
  5. $urls=array(); // Здесь будут храниться собранные ссылки
  6. $content=NULL; // Рабочая переменная
  7. // Здесь ссылки, которые не должны попасть в sitemap.xml
  8. $nofollow=array('/out/','/error/');
  9. // Первой ссылкой будет главная страница сайта, ставим ей 0, т.к. она ещё не проверена
  10. $urls[$scheme.$host]='0';
  11. // Разрешённые расширения файлов, чтобы не вносить в карту сайта ссылки на медиа файлы. Также разрешены страницы без разрешения, у меня таких страниц подавляющее большинство.
  12. $extensions[]='php';$extensions[]='aspx';$extensions[]='htm';$extensions[]='html';$extensions[]='asp';$extensions[]='cgi';$extensions[]='pl';
  13. // Корневая директория сайта, значение можно взять из $_SERVER['DOCUMENT_ROOT'].'/';
  14. $engine_root='/home/----/public_html/----.com/';
  15.  
  16. // Функция для сбора ссылок
  17. function sitemap_geturls($page,&$host,&$scheme,&$nofollow,&$extensions,&$urls)
  18. {
  19.         //Возможно уже проверяли эту страницу
  20.         if($urls[$page]==1){continue;}
  21.         //Получаем содержимое ссылки. если недоступна, то заканчиваем работу функции и удаляем эту страницу из списка
  22.         $content=file_get_contents($page);if(!$content){unset($urls[$page]);return false;}
  23.         //Отмечаем ссылку как проверенную (мы на ней побывали)
  24.         $urls[$page]=1;
  25.         //Проверяем не стоит ли запрещающий индексировать ссылки на этой странице мета-тег с nofollow|noindex|none
  26.         if(preg_match('/<[Mm][Ee][Tt][Aa].*[Nn][Aa][Mm][Ee]=.?("|\'|).*[Rr][Oo][Bb][Oo][Tt][Ss].*?("|\'|).*?[Cc][Oo][Nn][Tt][Ee][Nn][Tt]=.*?("|\'|).*([Nn][Oo][Ff][Oo][Ll][Ll][Oo][Ww]|[Nn][Oo][Ii][Nn][Dd][Ee][Xx]|[Nn][Oo][Nn][Ee]).*?("|\'|).*>/',$content)){$content=NULL;}
  27.     //Собираем все ссылки со страницы во временный массив, с помощью регулярного выражения.
  28.         preg_match_all("/<[Aa][\s]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ '\"\s]*([^ \"'>\s#]+)[^>]*>/",$content,$tmp);$content=NULL;
  29.         //Добавляем в массив links все ссылки не имеющие аттрибут nofollow
  30.         foreach($tmp[0] as $k => $v){if(!preg_match('/<.*[Rr][Ee][Ll]=.?("|\'|).*[Nn][Oo][Ff][Oo][Ll][Ll][Oo][Ww].*?("|\'|).*/',$v)){$links[$k]=$tmp[1][$k];}}
  31.         unset($tmp);
  32.     //Обрабатываем полученные ссылки, отбрасываем "плохие", а потом и с них собираем...
  33.         for ($i = 0; $i < count($links); $i++)
  34.         {
  35.                 //Если слишком много ссылок в массиве, то пора прекращать нашу деятельность (читай спецификацию)
  36.                 if(count($urls)>49900){return false;}
  37.                 //Если не установлена схема и хост ссылки, то подставляем наш хост
  38.                 if(!strstr($links[$i],$scheme.$host)){$links[$i]=$scheme.$host.$links[$i];}
  39.                 //Убираем якори у ссылок
  40.                 $links[$i]=preg_replace("/#.*/X", "",$links[$i]);
  41.                 //Узнаём информацию о ссылке
  42.                 $urlinfo=@parse_url($links[$i]);if(!isset($urlinfo['path'])){$urlinfo['path']=NULL;}
  43.                 //Если хост совсем не наш, ссылка на главную, на почту или мы её уже обрабатывали - то заканчиваем работу с этой ссылкой
  44.                 if((isset($urlinfo['host']) AND $urlinfo['host']!=$host) OR $urlinfo['path']=='/' OR isset($urls[$links[$i]]) OR strstr($links[$i],'@')){continue;}
  45.                 //Если ссылка в нашем запрещающем списке, то также прекращаем с ней работать
  46.                 $nofoll=0;if($nofollow!=NULL){foreach($nofollow as $of){if(strstr($links[$i],$of)){$nofoll=1;break;}}}if($nofoll==1){continue;}
  47.                 //Если задано расширение ссылки и оно не разрешёно, то ссылка не проходит
  48.                 $ext=end(explode('.',$urlinfo['path']));
  49.                 $noext=0;if($ext!='' AND strstr($urlinfo['path'],'.') AND count($extensions)!=0){$noext=1;foreach($extensions as $of){if($ext==$of){$noext=0;continue;}}}if($noext==1){continue;}
  50.                 //Заносим ссылку в массив и отмечаем непроверенной (с неё мы ещё не забирали другие ссылки)
  51.                 $urls[$links[$i]]=0;
  52.                 //Проверяем ссылки с этой страницы
  53.                 sitemap_geturls($links[$i],$host,$scheme,$nofollow,$extensions,$urls);
  54.         }
  55.         return true;
  56. }
  57.  
  58. // (START!) Первоначальный старт функции для проверки главной страницы и последующих
  59. sitemap_geturls($scheme.$host,$host,$scheme,$nofollow,$extensions,$urls);
  60.  
  61. // Когда все ссылки собраны, то обрабатываем их и записываем в файлы sitemap.xml и sitemap.txt (должны быть права на запись)
  62. $sitemapXML='<?xml version="1.0" encoding="UTF-8"?>
  63. <urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
  64. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  65. xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
  66. <!-- Last update of sitemap '.date("Y-m-d H:i:s+06:00").' -->';
  67. $sitemapTXT=NULL;
  68.  
  69. // Добавляем каждую ссылку
  70. foreach($urls as $k => $v){$sitemapXML.="\r\n<url><loc>{$k}</loc><changefreq>weekly</changefreq><priority>0.5</priority></url>";$sitemapTXT.="\r\n".$k;}
  71.  
  72. //Окончание для файла sitemap.xml
  73. $sitemapXML.="\r\n</urlset>";
  74.  
  75. //Некоторые символы, а также кириллица - должны быть в правильной кодировке/виде (по спецификации)
  76. $sitemapXML=trim(strtr($sitemapXML,array('%2F'=>'/','%3A'=>':','%3F'=>'?','%3D'=>'=','%26'=>'&','%27'=>"'",'%22'=>'"','%3E'=>'>','%3C'=>'<','%23'=>'#','&'=>'&')));
  77. $sitemapTXT=trim(strtr($sitemapTXT,array('%2F'=>'/','%3A'=>':','%3F'=>'?','%3D'=>'=','%26'=>'&','%27'=>"'",'%22'=>'"','%3E'=>'>','%3C'=>'<','%23'=>'#','&'=>'&')));
  78.  
  79. //Запись в файл
  80. $fp=fopen($engine_root.'sitemap.txt','w+');if(!fwrite($fp,$sitemapTXT)){echo 'Ошибка записи!';}fclose($fp);
  81. $fp=fopen($engine_root.'sitemap.xml','w+');if(!fwrite($fp,$sitemapXML)){echo 'Ошибка записи!';}fclose($fp);


Судя по отзывам на сайте, до меня ни у кого проблем не было... Скажите, эта ошибка может возникать из-за настроек php или чего-то в этом роде, т.е. связаных не со скриптом, а с моим хостинг сервером?

(Отредактировано автором: 16 Октября, 2014 - 11:42:42)

 
 Top
Sail
Отправлено: 16 Октября, 2014 - 12:04:21
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




slavikua пишет:
failed to open stream: HTTP request failed!  in /home/----/public_html/----.com/ cron/sitemap.php on line 22

Не может подгрузить данные по ссылке... которая сформирована в переменной $page, передаваемой функции sitemap_geturls().
 
 Top
slavikua
Отправлено: 16 Октября, 2014 - 13:28:25
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Sail пишет:
slavikua пишет:
failed to open stream: HTTP request failed!  in /home/----/public_html/----.com/ cron/sitemap.php on line 22

Не может подгрузить данные по ссылке... которая сформирована в переменной $page, передаваемой функции sitemap_geturls().


Попробовал прогнать скрипт на бесплатном хостинге - все работает отлично!
Так что прошу прощение за беспокойство Подмигивание Sail отдельное спасибо за ответы. Буду искать причину у себя на хостинге/настройках хостинга.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB