За последние 24 часа нас посетили 57194 программиста и 1683 робота. Сейчас ищут 1250 программистов ...

По какой то причине, не работает код

Тема в разделе "PHP для новичков", создана пользователем Great_DUKE, 20 авг 2016.

  1. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    Использую данную библиотеку https://github.com/web-push-libs/web-push-php/ (библиотека для отправки PUSH уведомлений). В index.php вставляю следующий код
    PHP:
    1. <?
    2.  
    3. use Minishlink\WebPush\WebPush;
    4.  
    5. $notifications = array(
    6.     array(
    7.         'endpoint' => 'https://android.googleapis.com/gcm/send/(тут скрытый текст)',
    8.         'payload' => 'hello !',
    9.         'userPublicKey' => '(тут скрытый текст)',
    10.         'userAuthToken' => '(тут скрытый текст)',
    11.     ),
    12. );
    13.  
    14. $webPush = new WebPush();
    15.  
    16.  
    17. $webPush->sendNotification(
    18.     $notifications[0]['endpoint'],
    19.     $notifications[0]['payload'], // optional (defaults null)
    20.     $notifications[0]['userPublicKey'], // optional (defaults null)
    21.     $notifications[0]['userAuthToken'], // optional (defaults null)
    22.     true // optional (defaults false)
    23. );
    24.  
    25. ?>
    Когда я захожу на index.php выдает ошибку "Невозможно отобразить страницу. HTTP ERROR 500".
    Насколько я понял, страница перестает работать после этого кода
    PHP:
    1. $webPush = new WebPush();
    Что тут не так?
    Версия PHP 7.0
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Great_DUKE нравится это.
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    <? PHP 7.0 хм... что-то тут не так. И подключен ли autoload composer`а?
     
  4. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    Код ошибки Fatal error: Uncaught Error: Class 'Minishlink\WebPush\WebPush' not found in ПУТЬ К ДИРЕКТОРИИ/index.php:18 Stack trace: #0 {main} thrown in ПУТЬ К ДИРЕКТОРИИ/index.php on line 18
    Код файла
    PHP:
    1. <?
    2. use Minishlink\WebPush\WebPush;
    3. $notifications = array(
    4.     array(
    5.         'endpoint' => 'https://android.googleapis.com/gcm/send/(тут скрытый текст)',
    6.         'payload' => 'hello !',
    7.         'userPublicKey' => '(тут скрытый текст)',
    8.         'userAuthToken' => '(тут скрытый текст)',
    9.     ),
    10. );
    11. $webPush = new WebPush();
    12. $webPush->sendNotification(
    13.     $notifications[0]['endpoint'],
    14.     $notifications[0]['payload'], // optional (defaults null)
    15.     $notifications[0]['userPublicKey'], // optional (defaults null)
    16.     $notifications[0]['userAuthToken'], // optional (defaults null)
    17.     true // optional (defaults false)
    18. );
    19. ?>
    --- Добавлено ---
    Я не имею понятия, что такое autoload. Но думаю, что нет.
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Почитай как эту библиотеку установить с помощью composer.

    Можешь попробовать и просто подключить в inde.php эти файлы https://github.com/web-push-libs/web-push-php/tree/master/src через include.
     
    Great_DUKE нравится это.
  6. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    PHP:
    1. <?php
    2. require __DIR__."/vendor/autoload.php";
    3. // далее код
    php-файл начинается с <?php, в конце ?> не нужен и даже вреден. Все остальные варианты либо требуют дополнительных параметров, либо уже выпилены из php, за исключением конструкции <?= 'bla-bla' ?>, которая жива и используется.

    Далее, этот пакет, как и большинство других рекомендуется устанавливать через composer, который требует подключения своего загрузчика, дабы все это сразу из коробки работало без лишних телодвижений.
    Подробнее тут: https://getcomposer.org/doc/01-basic-usage.md
     
  7. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    Я не понимаю. Куда и каким образом вставлять эти команды для установки?
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Если ты про composer, то тебе нужен доступ к terminal или ssh, обычно на хостинге дают ssh.

    Это по ssh, terminan.
    ~ домашняя папка
    Устанавливаешь composer, обычно в домашний каталог ~/bin/ как установить есть на сайте composer.
    Скажем composer установили сюда ~/bin/composer
    Потом создаём папку ~/example.com/www это будет document_root
    Заходим cd ~/example.com и распаковываем скаченный архив с https://github.com/web-push-libs/web-push-php/ (там есть зелёная кнока download)
    Запускаем ~/bin/composer update
    Потом в папку ~/example.com/www можно добавить файл t.php
    PHP:
    1. <?php
    2. use Minishlink\WebPush\WebPush;
    3. require '../vendor/autoload.php';
    4.  
    5. $webPush = new WebPush();
    Готово, вызываем t.php.

    В архиве с сообщением, результат ~/example.com
    Если с архивом будут проблемы, переименуй его в example.tar.bz2
     

    Вложения:

    • example.zip
      Размер файла:
      979,8 КБ
      Просмотров:
      4
    Great_DUKE нравится это.
  9. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    После нескольких манипуляций, у меня в корневой папке сайта появилось:
    папка "vendor"
    папка ".composer"
    и несколько файлов composer разных расширений.

    Позже я создал папку test, в которую поместил скачанный мною архив, и создал в этой папке t.php.
    В этой папке я полностью указал путь до autoload.php.
    Захожу на этот файл через браузер, и мне все-равно выдет ошибку "Fatal error: Uncaught Error: Class 'Minishlink\WebPush\WebPush' not found in /home/p/phoeniei/gameweb.pro/public_html/test/t.php:7 Stack trace: #0 {main} thrown in /home/p/phoeniei/gameweb.pro/public_html/test/t.php on line 7"

    Простите, что так туплю, просто я впервые работаю с подобным.
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Great_DUKE у тебя папка src и vendor в одной папке рядом?
     
    Great_DUKE нравится это.
  11. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    Папка vendor находится по адресу: public_html/vendor/
    Папка src : public_html/test/src
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ну вот, перечитай ещё пару раз инструкцию, что я написал, посмотри на архив, который я прикрепил, увидишь, что src и vendor должны быть в одной папке рядом.
     
    Great_DUKE нравится это.
  13. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    Я в t.php указал полный путь до папки vendor
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @Great_DUKE я рад за тебя, ты просто не хочешь выполнять все пункты инструкции (про src и vendor, третий раз пишу)? Я проверял, всё работает по ней. Ну и архив даже выложил, на всякий случай.
    Скачай архив и сравни, что где лежит.
     
    Great_DUKE нравится это.
  15. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    Огромное вам спасибо. Все заработало.
    Теперь, хотелось бы узнать, а почему все не работало, когда я просто указал полный путь к папке vendor?
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Потому что в composer.json указана папка vendor и src, а не vendor и test/src
     
  17. Great_DUKE

    Great_DUKE Новичок

    С нами с:
    2 ноя 2015
    Сообщения:
    106
    Симпатии:
    0
    И еще.
    Я сделал файл t.php в виде функции.
    Можно ли как нибудь подключить файл t.php к другим файлам?
     
  18. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Попробуй, только учти, что путь к autoload нужно будет правильный указывать, ты же подключишь через require, и если тот скрипт в котором ты подключаешь не в той же папке, что и t.php, то путь до autoload.php изменится.
     
  19. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    хех, я бы написал что в разделе autoload вашего composer.json можно создать секцию files, через которую обычно и подключаются файлы с функциями, но это и так есть по ссылке что я скинул изначально. Только вот кому интересно читать доки? )
     
    denis01 нравится это.