Использую данную библиотеку https://github.com/web-push-libs/web-push-php/ (библиотека для отправки PUSH уведомлений). В index.php вставляю следующий код PHP: <? use Minishlink\WebPush\WebPush; $notifications = array( array( 'endpoint' => 'https://android.googleapis.com/gcm/send/(тут скрытый текст)', 'payload' => 'hello !', 'userPublicKey' => '(тут скрытый текст)', 'userAuthToken' => '(тут скрытый текст)', ), ); $webPush = new WebPush(); $webPush->sendNotification( $notifications[0]['endpoint'], $notifications[0]['payload'], // optional (defaults null) $notifications[0]['userPublicKey'], // optional (defaults null) $notifications[0]['userAuthToken'], // optional (defaults null) true // optional (defaults false) ); ?> Когда я захожу на index.php выдает ошибку "Невозможно отобразить страницу. HTTP ERROR 500". Насколько я понял, страница перестает работать после этого кода PHP: $webPush = new WebPush(); Что тут не так? Версия PHP 7.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: <? use Minishlink\WebPush\WebPush; $notifications = array( array( 'endpoint' => 'https://android.googleapis.com/gcm/send/(тут скрытый текст)', 'payload' => 'hello !', 'userPublicKey' => '(тут скрытый текст)', 'userAuthToken' => '(тут скрытый текст)', ), ); $webPush = new WebPush(); $webPush->sendNotification( $notifications[0]['endpoint'], $notifications[0]['payload'], // optional (defaults null) $notifications[0]['userPublicKey'], // optional (defaults null) $notifications[0]['userAuthToken'], // optional (defaults null) true // optional (defaults false) ); ?> --- Добавлено --- Я не имею понятия, что такое autoload. Но думаю, что нет.
Почитай как эту библиотеку установить с помощью composer. Можешь попробовать и просто подключить в inde.php эти файлы https://github.com/web-push-libs/web-push-php/tree/master/src через include.
PHP: <?php require __DIR__."/vendor/autoload.php"; // далее код php-файл начинается с <?php, в конце ?> не нужен и даже вреден. Все остальные варианты либо требуют дополнительных параметров, либо уже выпилены из php, за исключением конструкции <?= 'bla-bla' ?>, которая жива и используется. Далее, этот пакет, как и большинство других рекомендуется устанавливать через composer, который требует подключения своего загрузчика, дабы все это сразу из коробки работало без лишних телодвижений. Подробнее тут: https://getcomposer.org/doc/01-basic-usage.md
Если ты про 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: <?php use Minishlink\WebPush\WebPush; require '../vendor/autoload.php'; $webPush = new WebPush(); Готово, вызываем t.php. В архиве с сообщением, результат ~/example.com Если с архивом будут проблемы, переименуй его в example.tar.bz2
После нескольких манипуляций, у меня в корневой папке сайта появилось: папка "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" Простите, что так туплю, просто я впервые работаю с подобным.
Ну вот, перечитай ещё пару раз инструкцию, что я написал, посмотри на архив, который я прикрепил, увидишь, что src и vendor должны быть в одной папке рядом.
@Great_DUKE я рад за тебя, ты просто не хочешь выполнять все пункты инструкции (про src и vendor, третий раз пишу)? Я проверял, всё работает по ней. Ну и архив даже выложил, на всякий случай. Скачай архив и сравни, что где лежит.
Огромное вам спасибо. Все заработало. Теперь, хотелось бы узнать, а почему все не работало, когда я просто указал полный путь к папке vendor?
И еще. Я сделал файл t.php в виде функции. Можно ли как нибудь подключить файл t.php к другим файлам?
Попробуй, только учти, что путь к autoload нужно будет правильный указывать, ты же подключишь через require, и если тот скрипт в котором ты подключаешь не в той же папке, что и t.php, то путь до autoload.php изменится.
хех, я бы написал что в разделе autoload вашего composer.json можно создать секцию files, через которую обычно и подключаются файлы с функциями, но это и так есть по ссылке что я скинул изначально. Только вот кому интересно читать доки? )