20220117のPHPに関する記事は6件です。

composer require linecorp/line-bot-sdk導入時のエラー解決

概要 composer require linecorp/line-bot-sdkのエラー解決。いくつかネット記事を回ったものの、同じ解決法をとっている人がいなかったので。 環境は以下です。 Cloud9 PHP 7.3.30 Laravel Framework 6.20.44 エラー内容 $ composer require linecorp/line-bot-sdk Using version ^7.3 for linecorp/line-bot-sdk ./composer.json has been updated Running composer update linecorp/line-bot-sdk Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires linecorp/line-bot-sdk ^7.3 -> satisfiable by linecorp/line-bot-sdk[7.3.0]. - linecorp/line-bot-sdk 7.3.0 requires ext-curl * -> it is missing from your system. Install or enable PHP's curl extension. To enable extensions, verify that they are enabled in your .ini files: ///中略 You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode. Installation failed, reverting ./composer.json and ./composer.lock to their original content. 解決方法 1、拡張curl導入(やる必要なかった) エラーの内容から、拡張curlが無い、あるいは無効だからインストールに失敗したらしいと予想。 $ sudo apt-get install php-curl 拡張curlはエラー無く導入できたと思われた。再度導入を試みるも同様のエラー。 2、無効化されている可能性 導入と同時に有効化されるはずだが、php.iniで無効化されている可能性を考え、php.iniを開く。「extension=curl」で検索をかけるが見つからなかった。 以下コマンドで入ってるモジュールを調べたところ、そもそも拡張curlが入ってないらしい。どうやら1の段階で拡張curl導入に失敗していた。 $ php -m [PHP Modules] bcmath calendar Core ctype date ///後略 3、再度コマンドを変えて拡張curlを導入 $ sudo apt-get install php7.3-curl 違うコマンドを見つけたので拡張curlの導入を再度試みる。 4、line-bot-sdkを導入 $ composer require linecorp/line-bot-sdk 成功! そういえばエラーのとこにもバージョン指定してあったね。見通しが立つのは早かったけど、コマンドを見つけるまでに時間がかかった。 参考記事 大変お世話になりました。ありがとうございます。 参照日(2022/01/17) https://qiita.com/____easy/items/06406fc62bd7464ad651 https://qiita.com/mktro/items/d164bd4a88fc51f2a99d
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PHPの学習記録①

PHPの学習記録を書いていきたいと思います 今日からPHPの学習を始めました。 環境構築でさっそく躓いてしまいました。。。 Homebrewを使ってインストールをしたのですが、pathが通っておらず実行されない。 pathはほんとにむずかしいですね。 なんとか環境構築ができたので早速プログラムを書いてみることに! Hello World おなじみのHello Worldを出力してみました。 phpではprintを使って出力するみたいですね! <?php print " Hello World"; 足し算 次は足し算をしてみます! 足し算は + を使って計算します。 PHP_EOLとは改行のことみたいなのでこれから使うことは結構ありそうな予感 <?php print 15 + 5 + 5; print PHP_EOL; コメント PHPのコメントは他と違うなと思いました。 //だけじゃなくて<php?の中に書かないとだめみたいです。 <?php //1行コメント /* 複数行コメント */ // 次の処理は実行されません // print "Hello World"; // 10 足す 5の計算結果を出力します。 // print 10 - 5; 変数 変数は$を使って宣言 PHPでは文字列をつなげるのは . を使います。 <?php $first_name = "太郎"; $last_name = "山田"; print $last_name . $first_name; 文章が下手くそですが、日頃学んだことや気づいたことを投稿していきたいと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LiteSpeed Web Server と CodeServer で作る PHP 開発環境

はじめに 雑に書いていますが後で直します 下準備 LiteSpeed をインストールします Xcodeをインストール [root@vm opc]# dnf -y install gcc make lsphp80-devel lsphp80-pear [root@vm opc]# /usr/local/lsws/lsphp80/bin/pecl install xdebug ~(中略)~ +----------------------------------------------------------------------+ | | | INSTALLATION INSTRUCTIONS | | ========================= | | | | See https://xdebug.org/install.php#configure-php for instructions | | on how to enable Xdebug for PHP. | | | | Documentation is available online as well: | | - A list of all settings: https://xdebug.org/docs-settings.php | | - A list of all functions: https://xdebug.org/docs-functions.php | | - Profiling instructions: https://xdebug.org/docs-profiling2.php | | - Remote debugging: https://xdebug.org/docs-debugger.php | | | | | | NOTE: Please disregard the message | | You should add "extension=xdebug.so" to php.ini | | that is emitted by the PECL installer. This does not work for | | Xdebug. | | | +----------------------------------------------------------------------+ ~(中略)~ Build process completed successfully Installing '/usr/local/lsws/lsphp80/lib64/php/modules/xdebug.so' install ok: channel://pecl.php.net/xdebug-3.1.2 configuration option "php_ini" is not set to php.ini location You should add "zend_extension=/usr/local/lsws/lsphp80/lib64/php/modules/xdebug.so" to php.ini PHP側の設定 PHPの設定を編集 [root@vm opc]# vi /usr/local/lsws/lsphp80/etc/php.ini 最終行に追記 /usr/local/lsws/lsphp80/etc/php.ini [xdebug] zend_extension=/usr/local/lsws/lsphp80/lib64/php/modules/xdebug.so xdebug.mode=debug xdebug.start_with_request = yes xdebug.client_host=127.0.0.1 xdebug.client_port=9003 再起動 [root@vm opc]# systemctl restart lsws CodeServer をインストールする [root@vm opc]# curl -fsSL https://code-server.dev/install.sh | sh サービス化と同時に起動させて設定ファイル(パスワード込み)を生成させる [root@vm opc]# systemctl enable --now code-server@$USER $USERはLinuxユーザー名と置き換えてください。 設定ファイルの中にアクセスに必要なパスワードが書かれているので控えておく [root@vm opc]# cat /$USER/opc/.config/code-server/config.yaml bind-addr: 127.0.0.1:8080 auth: password password: 76f63ca8eef1d011f68bf306 cert: false ファイアウォールを許可する [root@vm opc]# firewall-cmd --zone=public --permanent --add-port=8080/tcp [root@vm opc]# firewall-cmd --reload LSWS の準備 ドキュメントルートを作ります。 リバースプロキシを組むためこのディレクトリは使用しませんが、LSWSの仕様上これが無いと動きません。 [root@vm opc]# mkdir -m 755 -p /usr/local/lsws/virtual/ide.vso.mydomain.com/html/ [root@vm opc]# chown -R nobody:nobody /usr/local/lsws/virtual/ide.vso.mydomain.com/ LSWS 上でリバースプロキシを設定します。 いざデバッグ URLへアクセスします。 例. https://ide.vso.mydomain.com
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Vulnhub]DEFCON TORONTO: GALAHADの脆弱性診断

はじめに 以下よりダウンロードできます。 免責事項 本記事で紹介する内容は、教育目的または脆弱性について仕組みを理解し周知、啓発を行うためだけに作成しております。 記載されているコードを実行した場合の損害は一切責任を負いません。 また、ハッキング行為をいかなる稼働環境・サービスに対しても行わないでください。成功しなくても試みること自体が違法行為にあたる場合があります。 上記の内容を十分理解された方のみ本記事をお読みください。 また、本記事の記載内容で、法的または倫理的に問題があると思われる箇所、その他お気づきの点などがございましたら、お手数ですがコメント欄までお知らせください。 DEFCON TORONTO: GALAHADについて デフコントロントによって2016年9月にホストされたオンラインCTFで使用されるVMの1つは、boot2rootの課題に合わせてわずかに変更されました。 難易度: 簡単 情報:収集する全体的な7つのフラグ、id 0が最後のステップです。 参考サイト 以下のサイトを参考にしました。 事前調査 robots.txt flag1 developer toolを開く シーザー暗号であることがわかるので、変換してみます。 flag1をgetしました。 flag2 /staff/でs.txtとnsa.jpgをダウンロードします。 s.txtの中身は以下のようになってます。 base64デコーディングします。 for i in $(cat s.txt); do echo -n $i | base64 --decode; done passphrase:以降のedwardがpassphraseです。 flag3 http://192.168.56.40/cgi-bin/vault.py?arg=message にアクセスしてみる。 下記のスクリプトを使うと、flag3が獲得できます。 flag4 ダウンロードをすると、enc.zipが得られます。 unzipをすると、enc.pycが得られます。 逆コンパイルをすると、enc.pyが得られます。 でA、_ Bと考えると、以下の結果になります。 flag5 http://192.168.56.40/knock.sh にアクセスしてみる。 リロードするたびに画面のコメントが変わる仕組みになっています。 以下、bashは作ったものの、参考サイトを再現できませんでした。 どなたか、成功された方がいらっしゃいましたら、コメント欄まで知らせください。 #!/bin/bash set -euo pipefail host="192.168.56.40" function tup() { echo "knock knock (tcp) $1" nmap -p "$1" "$host" &>/dev/null sleep 0.5 } function udp() { echo "knock knock (udp) 4444" nmap -sU -p 4444 "$host" &>/dev/null sleep 0.5 } function main() { entries=($(shuf -i 1-5 -n 5)) for e in "${entries[@]}"; do if [ "${e}" -eq 1 ]; then tup 31337 elif [ "${e}" -eq 2 ]; then tup 7331 elif [ "${e}" -eq 3 ]; then tup 31338 elif [ "${e}" -eq 4 ]; then tup 8331 else udp fi done echo "" echo "check nmap which open or close ..." echo "" sleep 1 nmap -p 21 "$host" } if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then main "$@" fi flag6 sshでnitro:zeusを使い、ゲームをクリアすると、flag6を得られます。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Drupalの管理画面ダッシュボードをリッチにするContent Plannerモジュール

Wordpressや他のITツールを使ったことがある方であれば、管理画面にログインをしたらダッシュボードが表示されるということに慣れているのではないでしょうか? それに対してDrupalはログイン後にはフロント画面のトップページが表示され、ページ上部に管理用のナビゲーションが表示されます。訪問者が実際に見る画面でコンテンツの作成・編集が行える利点があるものの、「ログインしたらダッシュボードが見たい!」といったユーザー向けに「Content Planner」が利用できるので紹介します。 Content Plannerモジュールでできること Content Plannerは以下の3つの機能があります。 コンテンツ状態ダッシュボード 公開予定カレンダー Kanbanボード コンテンツ状態ダッシュボード コンテンツ状態ダッシュボードはコンテンツの状態(下書き中の記事が5件、レビュー中の記事が2件、等)や、最近公開されたページ一覧、今後公開される記事一覧に加え、任意の情報やViewを埋め込むことができる画面です。 CMS内のコンテンツ作成作業の状況が一目で理解できるようになっています。 公開予定カレンダー 公開予定カレンダー画面では各コンテンツに設定されたスケジュール公開の予定がカレンダー表示で確認できます。予定の閲覧のみでなく、右上の+ボタンから直接ページの作成を行ったり、一度ある日付でスケジュール公開したコンテンツをドラッグ&ドロップで別日に移動することが可能です。 動画:公開予定カレンダーページからのコンテンツ作成 動画:公開予定カレンダーページでの公開予定変更 Kanbanボード TrelloやJIRA等のエンジニアにはお馴染みのKanbanでタスク管理ができるのがKanbanボード画面です。下書き、公開中、アーカイブ済み等の状態ごとにコンテンツをリスト表示することができます。自分が執筆しているページのみを表示すればToDoリストのように利用でき、他者作成のページも表示できるよう設定すれば、CMS全体のコンテンツ作成計画を統括できます。 また、各コンテンツをドラッグ&ドロップすることで、公開中の記事をアーカイブする等の状態の変更も可能です。 設定方法 次に、実際にDrupalに対してContent Plannerモジュールを導入する方法を紹介します。特に難しい設定はありません。 モジュールのインストール Drupal.org内のContent Plannerモジュールページ(https://www.drupal.org/project/content_planner)からモジュールの情報が確認できます。モジュールのソースコードをダウンロードできるリンクがありますが、Composerでのインストールが推奨されています。 composer require drupal/content_planner インストールが完了したら、「機能拡張」画面から、「Content Planner」モジュールを探し、有効化します。同時に、「Content Planner」モジュールが依存している、「Scheduler」、「Content Moderation」、「Workflows」モジュールも有効化されます。 以上で、インストールは完了です。画面上部のツールバーにContent Plannerリンクが表示されていれば成功です。 各機能の設定 次に各機能の初期設定を行う必要があります。特に難しい操作は必要ありませんが、公開予定カレンダーの設定には「Scheduler」モジュール、Kanbanボードの設定には「Content Moderation」モジュールの設定も必要になるので、順番に紹介します。 コンテンツ状態ダッシュボード ツールバーから「Content Planner」> 「ダッシュボード」へ遷移すると、コンテンツ状態ダッシュボードが表示されます。設定前の状態では「Dashboard is not configured yet. Please do this in the Settings tab. (ダッシュボードは設定がされていません。設定タブから行なってください)」とメッセージが表示されるので、設定タブへ移動します。 設定画面ではダッシュボードに表示するウィジェットを選択できます。とりあえずは「Content Status Widget」、「Recent Calendar Publications Widget」、「Recent Kanban Activities」、「User Widget」を選択します。その他の「Text/HTML Widget」は任意のテキストやHTMLをWYSIWYGエディタで記述して表示するウィジェット、「Views Widget」はViews機能で作成した任意のViewを埋め込むウィジェットなので、必要に応じて後で選択、設定してください。 「構成を保存」ボタンをクリックして設定を保存します。すると、選択したウィジェット名の右側に設定リンクが表示されるので、「User Widget」の設定に遷移して、「Which Roles to display」の下に表示されているユーザーの役割に全てチェックを入れて保存します。 ダッシュボード画面に戻ると、設定したウィジェットが表示されています。あらかじめ、いくつかコンテンツを作成しておくとよりイメージが湧きやすいです。 なお、これら以外のウィジェットを自分で追加することも可能です。カスタムモジュールとしてプラグインを作成します(この記事では触れません)。 公開予定カレンダー 次に公開予定カレンダーの設定を行います。公開予定カレンダーを利用するためには、最低1つのコンテンツタイプが日時指定公開に対応している必要があるので、ツールバーから「サイト構築」> 「コンテンツタイプ」に移動し、「記事」コンテンツタイプの編集画面にアクセスします。縦に並んでいる設定タブの一番下に「Scheduler」タブがあるので、「Enable scheduled publishing for this content type」、「Enable scheduled unpublishing for this content type」の両方にチェックを入れて「コンテンツタイプの保存」ボタンをクリックします。 次に「Content Planner」>「Content Calendar」画面に移動し、設定タブに移動します。「Which Content Types need to be displayed?」オプションにある「記事」コンテンツタイプにチェックを入れて構成を保存します。 カレンダー画面に戻ると、現在の月のカレンダーが表示されています。+マークにカーソルをホバーさせると、この画面から記事が作成できることが確認できます。試しに記事を作成し、保存すると、カレンダー内に記事が表示されます。この画面から記事を作成した場合には、公開スケジュールがデフォルトで指定の日になっています。また、このカレンダー内記事はドラッグ&ドロップすることで、公開日時を別の日に変更できます。 Kanbanボード 最後に、Kanbanボードの設定を行います。Kanbanボードを利用するためにはワークフローに対応したコンテンツが必要なため、「環境設定」> 「ワークフロー」から「Editorial」ワークフローの設定画面にアクセスします。「このワークフローの適用先」セクションからコンテンツタイプとして「記事」を選択し、保存します。 これにより、「Content Planner」>「Content Calendar」画面に移動すると、Kanbanボードが表示され、「Draft」、「Published」等のコンテンツ状態ごとの記事リストが表示されます。例えば「Draft」状態の記事を「Published」にドラッグ&ドロップすることで、記事を公開状態にすることが可能です。 以上で、「Content Planner」モジュールの主要3機能の設定は全て完了です。 応用 Google Analytics Reportモジュールとの併用 Drupal.orgの「Content Planner」ページにある紹介動画()では、ダッシュボードからGoogle Analyticsの情報が確認できるようになっています。これは「Google Analytics Report」モジュール(https://www.drupal.org/project/google_analytics_reports)をインストールすることで利用可能になるGoogle Analytics関連のViewを「Views Widget」で設定して表示しているためです。非常に効果的なモジュールの組み合わせです。 まとめ 「Content Planner」モジュール、いかがでしたでしょうか?CMS内のコンテンツ状態が一目で分かるダッシュボード、公開予定の確認と設定ができるカレンダー、ToDoリストとして利用できるKanbanボードが簡単に利用できるようになり、Drupalによるコンテンツ管理の効率化が可能です。 私見ですが、特にブログを書く上で、カレンダー内から公開日時を設定してコンテンツの作成が行えるというところが魅力的に感じました。先にタイトルだけの記事を公開予定しておき、公開までに書き上げる(間に合わなければ、コンテンツのないページが公開されてしまう)というような使い方で、ブログ執筆のモチベーションをあげれたらな、とか思ったりです。 私見ですが、特にブログを書く上で、カレンダー内から公開日時を設定してコンテンツの作成が行えるというところが魅力的に感じました。先にタイトルだけの記事を公開予定しておき、公開までに書き上げる(間に合わなければ、コンテンツのないページが公開されてしまう)というような使い方で、ブログ執筆のモチベーションをあげれたらな、とか思ったりです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

やっと分かった「インスタンス化」

■よく分かんないけどnewする プログラミングを始めてから、ずっと分からなかったんです。 インスタンス化。 なんだかよく分かんないけど、 newしないとできないことがあって、 newするとできるようになることがある。 どうやらこれがインスタンス化って言うらしい。 ふーん? newするって何なの...って思いながらいつもnewしてました。 調べると記事は色々出てきますよね。 設計図を実体化するみたいな感じ、とか大体そんなふうに。 ふむふむなるほど、、、、 わ〜、全然ピンと来ないなあ ? あ、決してわたしの見た記事がダメだったとかそういうことはなくて わたしの理解力のなさがピンと来なかった原因なんですが、 つい先日ようやく開眼(?)いたしまして、 今回はそれを記事にしたいと思います。 ■インスタンス化っていうのは 思ったんですよ。 インスタンス化っていうのはもしかして、 召喚獣を召喚するのと同じなんじゃない??  って。 いきなり召喚獣とか言い出して大丈夫でしょうか。 大丈夫です。 (あまりゲームに馴染みのない方には意味不明ですね、すみません汗) さてここに魔術書があることにします。 魔術書にはありとあらゆる召喚獣を呼び出すための魔術が書かれていますが その中から召喚獣をひとつピックアップしてみましょう。 tsuyoi_dragon.php class TsuyoiDragon { public function flame_breath ($energy, $anger) { $flame_power = $energy*$anger; return $flame_power; } public function blizzard_breath ($eneregy, $sadness) { $blizzard_power = $eneregy*$sadness; return $blizzard_power; } } 旅の途中で敵に遭遇して、 このツヨイドラゴン(強い)を呼び出して敵をやっつけたい!と思ったとき 魔術書に向かって「flame_breath!!!」と叫んでも 本に向かって何やら大きい声を出している人 に なってしまうだけなのですが それはちょっと恥ずかしいので、ここで代々伝わる詠唱方法を使います。 そうです、それが「new」です。 newとは言い換えると、「出でよ!!」なのであります。 「出でよ!ツヨイドラゴン!flame_breathだ!」 をphp風に記述すると summon_spell.php $tsuyoi_dragon = new TsuyoiDragon; $attack = $tsuyoi_dragon->flame_breath($energy, $anger); こんな感じになるかと思います。 いかがでしょう。伝わりますでしょうか。 魔術書に書かれているだけの状態ではツヨイドラゴンの必殺技は使えないので、 「new(出でよ)して召喚獣を出現させてから任意の必殺技を指示できる状態にする」 これがインスタンス化なのだと理解したとき、 ようやくわたしのなかで腑に落とすことができまして 大変スッキリしました。 ■さいごに この記事に辿り着いて頂いた方に、 スッキリが少しでもシェアできましたら嬉しいです。 最後までお読み頂きありがとうございました!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む