20211026のPHPに関する記事は9件です。

【PHP初心者】PHP(MAMP)×Mac(M1)×VScode環境でデバッグ機能を使えるようにする方法

 はじめに プログラミングをしていると、思う通りの挙動にならない場面がよくありますよね。そんな時に役に立つのがデバッグ機能です。 以前Javaでプログラミングしていたときは「Eclipse」という統合環境を使用していたため、デバッグ機能も簡単に使うことができました。 しかし、現在使っている環境はPHP×VScode。 そのままではデバッグ機能を使うことはできません。 デバッグ機能を搭載すべく参考にできそうな情報を調べたのですが、2021年9月時点ではXampp×Mac(M1)×VScodeの設定記事を見つける事ができませんでした。(Windowsの記事はヒットするんですが...) Macの場合、MAMPの方が参考にできる記事が多く、デバッグ機能の設定もしやすそうだったので、開発環境をXAMPPからMAMPに移行しました。 ということで前置きが長くなりましたが、本記事は「PHP(MAMP)×Mac(M1)×VScode環境でデバッグ機能(Xdebug)を使えるようにする」ための備忘録になります。 ※PHPのverは8.0.8です。 設定の流れ 1.MAMPのセットアップ 参考にさせていたのは下記の記事です。 □ 環境構築 →MacにPHP環境を構築する(MAMP) □ MAMP PROのアンインストール →【MAMP/MacOS】3分で出来る不要なMAMP PROをアンインストールする方法! □ セキュリティ対策 →MacにWebサーバ構築(MAMP編) □ MySQLのパスの通し方 →[Mac] MAMP環境のMySQLにパスを通す方法   ※この後、phpMyAdminにて、再度データベースを作成 2.デバック機能 □ デバッグ機能の設定 →【死ぬほど簡単】MAMPでXdebugを使う方法(VSCode) やっとの思いでここまできましたが、なぜかうまく動かない...!!泣 □ 参考 →【PHP】MAMP環境でXdebugを使いたいが、ブレークポイントで処理が中断されない こちらの記事によると、php.iniの「xdebug.remote_port」のポート番号を確認するようにとのこと。 ポート番号が確認できません。なんかこの辺が影響してそうです。 「xdebug.remote_port xdebug 3」と調べるといろんな記事が出てきたので、その都度php.iniを変更したのですがなかなか上手くいかず...。 そして最終的にたどり着いたのがこちら。 □ 参考 →https://blog.junpeko.com/xdebug-3-setting この記事を参考に修正した結果、無事デバッグできるようになりました!! (XAMP→MAMP→debug機能が使えるようになるまで、かなりの時間がかかりました...。泣)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】気象庁API から天気予報を取得してみた

初めに ダッシュボード作成のために、天気予報をAPIにて取得する。 1年くらい前の気象庁のHPが大幅リニューアルし、非公式ながらAPIが発見された。そのAPIを用い「天気予報」を取得したいと思う。気象庁 にて使用されているAPIを使用。詳しいことは気象庁ホームページ防災気象情報のURL構造を参考に作成した。 ⇒PHPを用い、HP等で表示させる用途を想定 ※非公式のため、無保証。アップデート等により使用不可になる可能性もあり。 ※政府標準利用規約(PDF)に準拠して利用すること 環境 -Windows10 -PHP 8.0.6 データの詳細 エリアのコード(pathCode) 東京は130000 http://www.jma.go.jp/bosai/common/const/area.json コンテンツの種別は http://www.jma.go.jp/bosai/common/const/contents.json テロップ番号 https://plaza.rakuten.co.jp/rabbit77/3000/ コード jma_weather_api.php <?php //気象庁のAPIにて気象情報取得 $url = "https://www.jma.go.jp/bosai/forecast/data/forecast/{エリアコード}.json"; $weather_json = file_get_contents($url); $weather_array = json_decode($weather_json, true); $date = $weather_array["0"]["timeSeries"]["0"]["timeDefines"]["0"]; $jma_weather = $weather_array["0"]["timeSeries"]["0"]["areas"]["0"]["weathers"]["0"]; $jma_rainfall = $weather_array["Feature"]["0"]["Property"]["WeatherList"]["Weather"]["0"]["Rainfall"]; echo "日時:" . $date . "\n"; echo "今日の天気:" . $jma_weather. "\n"; echo "雨量:" . $jma_rainfall. "\n"; 終わりに 非公式とは言え、気象庁の情報を簡単に使用できるのは便利ですね。 HPに気象庁の天気予報の掲載ができます。 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】Yahoo 気象情報API から雨量情報を取得してみた

初めに ダッシュボード作成のために、雨量をAPIにて取得する YOLP 気象情報API を使用する。 ⇒PHPを用い、HP等で表示させる用途を想定 リファレンスより引用 指定した緯度経度の雨の強さを取得できるAPIです。 現在時刻の降水強度実測値から、60分後までの降水強度予測値を取得できます。 環境 -Windows10 -PHP 8.0.6 パラメータ appid => Yahooデベロッパー登録をし、取得する coordinates => 経度,緯度(世界測地系) output => 出力形式を指定(json/xml) date =>日時を指定(YYYYMMDDHHMI形式) 本コードではparamsにてパラメータをセットしてください。 コード yahoo_weather_api.php <?php //Yahoo weather APIにて気象情報を取得する $api = 'https://map.yahooapis.jp/weather/V1/place?'; //パラメータをセット $params = array( "appid" => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "coordinates" => "135.000000,35.0000000", "output" => "json", "date" => date("YmdHi", strtotime("now")), ); $url = $api . 'appid=' . $params['appid'] . "&coordinates=" . $params["coordinates"] . "&output=" . $params["output"]; $weather_json = file_get_contents($url); $weather_array = json_decode($weather_json, true); //降水強度実測値を変数に格納 $date = $weather_array["Feature"]["0"]["Property"]["WeatherList"]["Weather"]["0"]["Date"]; $rainfall=$weather_array["Feature"]["0"]["Property"]["WeatherList"]["Weather"]["0"]["Rainfall"]; //出力 echo "日時:" . $date . "\n"; echo "雨量:" . $rainfall. "\n"; 終わりに 実測値といえども、気象レーダー解析雨量のため実際の降雨量と差異があるが、アメダスがない地点の雨量も取得できるのは魅力的。 ※降水強度は、気象レーダーで観測された降水の強さを時間雨量(mm/h)に換算した値で、実際の雨量とは異なります。 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】月位置(方位角・高度・月齢)計算APIから月齢を取得してみた

初めに ダッシュボード作成のために、月齢をAPIにて取得する 月位置(方位角・高度・月齢)計算API を使用すると取得できる。 ⇒PHPを用い、HP等で表示させる用途を想定 環境 -Windows10 -PHP 8.0.6 パラメータ lat (float):必須、取得したい場所の緯度、 lng (float): 必須、取得したい場所の経度 本コードではparamsにてパラメータをセットしてください。 コード moon_age_api.php <?php //moon age APIにて月齢情報を取得する $api = 'https://mgpn.org/api/moon/position.cgi?json'; $params = array( "lat" => "35.000000", "lon" => "135.00000", ); $url = $api . '&lat=' . $params['lat'] . "&lon=" . $params["lon"]; $moon_age_json = file_get_contents($url); $moon_age_array = json_decode($moon_age_json, true); $moon age = round($moon_age_array["result"]["age"], 3); //$moon_ageに今の月齢が格納される echo "moon age:".$moon_age 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

The "XXXXXXX" file could not be downloaded: failed to open stream: Cannot assign reques ted address 対処方法

1.S3のライブラリをappコンテナ内でインストールしようと下記コマンドを実行した所エラーが発生! /work# composer require league/flysystem-aws-s3-v3 //エラー The "http://repo.packagist.org/p/phpunit/php-invoker%24d51629773da6aa4144adc03bb9c518ddab3a46018cb3467f76ed7d0b00a3e417.json" file could not be downloaded: failed to open stream: Cannot assign reques ted address 2.下記コマンドでエラーの原因調査! すると、2箇所エラーらしき箇所を発見! 何かコマンドを実行するよう指示が出ました。 /work# composer diag Checking composer.json: OK Checking platform settings: OK Checking git settings: OK Checking http connectivity to packagist: OK Checking https connectivity to packagist: OK Checking github.com rate limit: OK Checking disk free space: OK Checking pubkeys: FAIL //ここがおかしい! Missing pubkey for tags verification //ここがおかしい! Missing pubkey for dev verification //ここがおかしい! Run composer self-update --update-keys to set them up //コマンド実行の指示! Checking composer version: You are not running the latest stable version, run `composer self-update` to update (1.10.20 => 2.1.9) Composer version: 1.10.20 PHP version: 7.4.15 PHP binary path: /usr/local/bin/php OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019 3.指示通りコマンド実行 どうやらコマンドを実行しろと指示が出てるようなので、一旦メッセージについて検索。 するとこちらの記事を発見したので、参考にコマンドを実行! https://teratail.com/questions/135212 # composer self-update --update-keys Open https://composer.github.io/pubkeys.html to find the latest keys Enter Dev / Snapshot Public Key (including lines with -----): コマンドを実行するとここまで表示される。どうやらKeyを入力しろと書かれているっぽい? 次に、参考サイトに記載されている通り、こちらのサイト(https://composer.github.io/pubkeys.html) の「Dev / Snapshot Public Key」の下の白線欄の長い文をコピペしてenterを押す! /work# composer self-update --update-keys Open https://composer.github.io/pubkeys.html to find the latest keys Enter Dev / Snapshot Public Key (including lines with -----): -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnBDHjZS6e0ZMoK3xTD7f FNCzlXjX/Aie2dit8QXA03pSrOTbaMnxON3hUL47Lz3g1SC6YJEMVHr0zYq4elWi i3ecFEgzLcj+pZM5X6qWu2Ozz4vWx3JYo1/a/HYdOuW9e3lwS8VtS0AVJA+U8X0A hZnBmGpltHhO8hPKHgkJtkTUxCheTcbqn4wGHl8Z2SediDcPTLwqezWKUfrYzu1f o/j3WFwFs6GtK4wdYtiXr+yspBZHO3y1udf8eFFGcb2V3EaLOrtfur6XQVizjOuk 8lw5zzse1Qp/klHqbDRsjSzJ6iL6F4aynBc6Euqt/8ccNAIz0rLjLhOraeyj4eNn 8iokwMKiXpcrQLTKH+RH1JCuOVxQ436bJwbSsp1VwiqftPQieN+tzqy+EiHJJmGf TBAbWcncicCk9q2md+AmhNbvHO4PWbbz9TzC7HJb460jyWeuMEvw3gNIpEo2jYa9 pMV6cVqnSa+wOc0D7pC9a6bne0bvLcm3S+w6I5iDB3lZsb3A9UtRiSP7aGSo7D72 8tC8+cIgZcI7k9vjvOqH+d7sdOU2yPCnRY6wFh62/g8bDnUpr56nZN1G89GwM4d4 r/TU7BQQIzsZgAiqOGXvVklIgAMiV0iucgf3rNBLjjeNEwNSTTG9F0CtQ+7JLwaE wSEuAuRm+pRqi8BRnQ/GKUcCAwEAAQ== -----END PUBLIC KEY----- Stored key with fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B 0C708369 153E328C AD90147D AFE50952 Enter Tags Public Key (including lines with -----): すると、次は「Tags Public Key」を入力するみたい。 次は先ほどコピペしたサイトに記載されてる「Tags Public Key」の白線欄の長い文をコピペしてenterを押す! Enter Tags Public Key (including lines with -----): -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0Vi/2K6apCVj76nCnCl2 MQUPdK+A9eqkYBacXo2wQBYmyVlXm2/n/ZsX6pCLYPQTHyr5jXbkQzBw8SKqPdlh vA7NpbMeNCz7wP/AobvUXM8xQuXKbMDTY2uZ4O7sM+PfGbptKPBGLe8Z8d2sUnTO bXtX6Lrj13wkRto7st/w/Yp33RHe9SlqkiiS4MsH1jBkcIkEHsRaveZzedUaxY0M mba0uPhGUInpPzEHwrYqBBEtWvP97t2vtfx8I5qv28kh0Y6t+jnjL1Urid2iuQZf noCMFIOu4vksK5HxJxxrN0GOmGmwVQjOOtxkwikNiotZGPR4KsVj8NnBrLX7oGuM nQvGciiu+KoC2r3HDBrpDeBVdOWxDzT5R4iI0KoLzFh2pKqwbY+obNPS2bj+2dgJ rV3V5Jjry42QOCBN3c88wU1PKftOLj2ECpewY6vnE478IipiEu7EAdK8Zwj2LmTr RKQUSa9k7ggBkYZWAeO/2Ag0ey3g2bg7eqk+sHEq5ynIXd5lhv6tC5PBdHlWipDK tl2IxiEnejnOmAzGVivE1YGduYBjN+mjxDVy8KGBrjnz1JPgAvgdwJ2dYw4Rsc/e TzCFWGk/HM6a4f0IzBWbJ5ot0PIi4amk07IotBXDWwqDiQTwyuGCym5EqWQ2BD95 RGv89BPD+2DLnJysngsvVaUCAwEAAQ== -----END PUBLIC KEY----- Stored key with fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0 87719BA6 8F3BB723 4E5D42D0 84A14642 Public keys stored in /composer どうやらこれでkeyの設定ができたみたいです! では、再度S3ライブラリのインストールを試してみます。 4.再度ライブラリをインストール /work# composer require league/flysystem-aws-s3-v3 [26-Oct-2021 00:24:40 Asia/Tokyo] PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 83886080 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleSet.php on line 90 Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 83886080 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleSet.php on line 90 Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.root@a2b065cfb628:/work# すると、次はまた違うエラーが発生!! エラーについて調べると、こちらのサイト(https://qiita.com/miriwo/items/a5fa25c1d36d00f40ec9) を発見。 どうやら、メモリの容量が足りないと指摘されているみたいです。 参考サイトの通りに対処していきます。 5.メモリ確認 エラーメッセージにこのサイトを見て!とリンクが貼られていたので見てみましょう。 https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors リンク先に記載されているコマンドを実行して、現在の割り当てられている設定のメモリを確認します。 /work# php -r "echo ini_get('memory_limit').PHP_EOL;" 256M 6.php.iniの編集 php.iniファイルで割当メモリ設定を設定できるらしいので編集します! 先ずは、php.iniの場所を確認 /work# php --ini | grep "php.ini" Configuration File (php.ini) Path: /usr/local/etc/php Loaded Configuration File: /usr/local/etc/php/php.ini 次にviモードでphp.iniを開きます。 /work# sudo vi /usr/local/etc/php/php.ini bash: sudo: command not found あれ、sudoコマンドが実行できない? ここでまたエラーについて調べます。 すると、こちらのサイトを発見。 https://qiita.com/TK_bone/items/46542a2b94f86a7bc740 7.ディストリビューションを調べる ディストリビューション?って何?となりましたが、とりあえずサイトに記載されている通りにコマンドを実行していきます。 /work# cat /etc/debian_version 10.8 8.sudoコマンドインストール 次にsudoコマンドを使えるようにするためインストールします。 /work# apt update Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB] Get:2 http://security.debian.org/debian-security buster/updates/main amd64 Packages [309 kB] Get:3 http://deb.debian.org/debian buster InRelease [122 kB] Get:4 http://deb.debian.org/debian buster-updates InRelease [51.9 kB] Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7906 kB] Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [15.2 kB] Fetched 8469 kB in 3s (2597 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 30 packages can be upgraded. Run 'apt list --upgradable' to see them. /work# apt install sudo Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: sudo 0 upgraded, 1 newly installed, 0 to remove and 30 not upgraded. Need to get 1244 kB of archives. After this operation, 3882 kB of additional disk space will be used. Get:1 http://deb.debian.org/debian buster/main amd64 sudo amd64 1.8.27-1+deb10u3 [1244 kB] Fetched 1244 kB in 0s (4715 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package sudo. (Reading database ... 14634 files and directories currently installed.) Preparing to unpack .../sudo_1.8.27-1+deb10u3_amd64.deb ... Unpacking sudo (1.8.27-1+deb10u3) ... Setting up sudo (1.8.27-1+deb10u3) ... invoke-rc.d: could not determine current runlevel invoke-rc.d: policy-rc.d denied execution of start. 9.viインストール よし、今度はsudoコマンドが使えるようになったので再チャレンジ! /work# sudo vi /usr/local/etc/php/php.ini sudo: vi: command not found あれ、次はviコマンドが使えないとエラーが出ました?! こちらもサイトに記載されている通りにvimをインストールしていきます。 https://qiita.com/m-m00/items/a042bf9d5c7c85a64895 /work# vi /usr/local/etc/php/php.ini bash: vi: command not found root@a2b065cfb628:/work# sudo vi /etc/php.ini sudo: vi: command not found root@a2b065cfb628:/work# apt-get update Hit:1 http://security.debian.org/debian-security buster/updates InRelease Hit:2 http://deb.debian.org/debian buster InRelease Hit:3 http://deb.debian.org/debian buster-updates InRelease Reading package lists... Done /work# apt-get install vim Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libgpm2 vim-common vim-runtime xxd Suggested packages: gpm ctags vim-doc vim-scripts The following NEW packages will be installed: libgpm2 vim vim-common vim-runtime xxd 0 upgraded, 5 newly installed, 0 to remove and 30 not upgraded. Need to get 7425 kB of archives. After this operation, 33.8 MB of additional disk space will be used. Do you want to continue? [Y/n] Y すると、インストール時に何やら質問がきました。 33.8MB使うけどいいか?と聞かれてるみたいなので、Yを入力してenterを押します。 すると、インストールが完了しました。 10.再度php.iniを編集 これで恐らくphp.iniが開けると思うので再チャレンジします。 /work# sudo vi /usr/local/etc/php/php.ini すると、今度は無事に開けましたね! では、下記の手順で編集します。 ①viを押してinsertに切り替え。 ②下記の部分を-1に変更 memory_limit = -1 ③escボタンを押して入力できないように切り替え。 ④:wqを入力してenterで変更内容を反映して保存。 11.再度S3ライブラリをインストール 再度ライブラリをインストールしますが、最初に叩いたコマンドに誤りがあったため、下記のように叩いてインストールします。 /work# composer require league/flysystem-aws-s3-v3 ↓ /work# composer require league/flysystem-aws-s3-v3:"^1.0" /work# composer require league/flysystem-aws-s3-v3:"^1.0" Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/ ./composer.json has been updated Loading composer repositories with package information Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/ Updating dependencies (including require-dev) Killed すると、インストールが上手くいくと思いきや、killedになってしまいました。 どうやら今度はdocker側のメモリが足りないことでインストールできなかったみたいです。 なかなか上手くいきませんね。。。 下記サイトを見つけたので、記載されている通りに対処してみます。 サイトを元にメモリの容量を増やしてください。 https://qiita.com/ikeyansaza/items/c231dc0f411336803f4d 12.再度S3ライブラリをインストール すると今度はインストールが上手くいったかと思います! Package manifest generated successfully. 80 packages you are using are looking for funding. Use the `composer fund` command to find out more! やっとインストールできましたね! ここまで大分長かったですがとりあえずインストールできて良かったです!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

phpbrew を使って install しようとすると openssl 周りのエラーが起きる

これは小ネタです タイトル通りのトラブルが起きた時の解消法です。 端的に言うと、openssl@3をインストールしてるとエラーが起こります。 エラー内容 error: use of undeclared identifier 'RSA_SSLV23_PADDING' REGISTER_LONG_CONSTANT("OPENSSL_SSLV23_PADDING", RSA_SSLV23_PADDING, CONST_CS|CONST_PERSISTENT); warning: 'RSA_new' is deprecated [-Wdeprecated-declarations] だいたいこういうエラーが出てしまいます(openssl@3をインストールしてると) そう言う時は、下記コマンドを打ちましょう(PHP8 をインストールする場合) OPENSSL_CFLAGS="-I/usr/local/opt/openssl@1.1/include" \ OPENSSL_LIBS="-L/usr/local/opt/openssl@1.1/lib -lcrypto -lssl" \ phpbrew install 8.0 +default コマンド掲載元: https://github.com/phpbrew/phpbrew/issues/1249
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】Open Weather Map APIから気象情報を取得してみた

初めに ダッシュボード作成のために、気象情報をAPIにて取得する Open Weather Map APIを使用すると取得できることが判明 ⇒PHPを用い、HP等で表示させる用途を想定 環境 -Windows10 -PHP 8.0.6 パラメータ lat (float):必須、取得したい場所の緯度、 lng (float): 必須、取得したい場所の経度 appid:必須、Open Weather Map APIに登録し、取得してください。 unit:metric 摂氏温度(℃)の取得に固定しています。 lang:ja 日本語に固定しています。 本コードではweather_configにてパラメータをセットしてください。 コード owm_api.php <?php //Open Weather Map気象情報を取得する //パラメータをセット $weather_config = array( 'appid' => 'XXXXXXXXXXXXXXXXXXXXX', 'lat' => '35.0000000', 'lon' => '135.0000000', ); $weather_json = file_get_contents('http://api.openweathermap.org/data/2.5/weather?lat=' . $weather_config['lat'] . '&lon=' . $weather_config['lon'] . '&units=metric&lang=ja&APPID=' . $weather_config['appid']); $weather_array = json_decode($weather_json, true); //必要情報を変数に格納 $weather = $weather_array["weather"]["0"]["main"]; $temp = $weather_array["main"]["temp"]; $temp_min = $weather_array["main"]["temp_min"]; $temp_max = $weather_array["main"]["temp_max"]; $cloud = $weather_array["clouds"]["all"]; echo "天気" . $weather . "\n"; echo "気温:" . $temp . "\n"; echo "最低気温:" . $temp_min . "\n"; echo "最高気温:" . $temp_max . "\n"; echo "雲量:" . $cloud . "\n"; 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】APIから日出、日没、薄明の時間を取得してみた

初めに ダッシュボード作成のために、各種情報をAPIにて取得する Sunset and sunrise times APIを使用すると取得できることが判明 ⇒PHPを用い、HP等で表示させる用途を想定 環境 -Windows10 -PHP 8.0.6 パラメータ lat (float): 取得したい場所の緯度、必須 lng (float): 取得したい場所の経度、必須 date (string): YYYY-MM-DDフォーマットにて入力/相対・絶対日時の指定も可能。入力しない場合は現在の時刻を取得する。オプション。 callback (string): Callback function name for JSONP response. Optional. formatted (integer): 0 か 1 (1 がデフォルト). 0の場合はISO 8601にて出力される。オプション 本コードでは$sunset_configにてパラメータをセットしてください。 コード sunset_time_api.php <?php //sunset_apiより日没、薄明時間を取得する date_default_timezone_set('Asia/Tokyo'); $sunset_config = array( 'lat' => '35.00000', 'lon' => '135.0000000', 'date' => 'today', 'formatted' => '0', ); $sunset_json = file_get_contents("https://api.sunrise-sunset.org/json?lat=" . $sunset_config["lat"] . "&lng=" . $sunset_config["lon"] . "&date=" . $sunset_config["date"] . "&formatted=" . $sunset_config["formatted"]); $sunset_array = json_decode($sunset_json, true); //UTC => Timestamp $utc_sunrise = strtotime($sunset_array["results"]["sunrise"]); $utc_sunset = strtotime($sunset_array["results"]["sunset"]); $utc_civil_twilight_end = strtotime($sunset_array["results"]["civil_twilight_end"]); $utc_nautical_twilight_end = strtotime($sunset_array["results"]["nautical_twilight_end"]); $utc_astronomical_twilight_end = strtotime($sunset_array["results"]["astronomical_twilight_end"]); //UTC => JST $sunrise = date("m/d H:i", $utc_sunrise); $sunset = date("m/d H:i", $utc_sunset); $civil_twilight_end = date("m/d H:i", $utc_civil_twilight_end); $nautical_twilight_end = date("m/d H:i", $utc_nautical_twilight_end); $astronomical_twilight_end = date("m/d H:i", $utc_astronomical_twilight_end); echo "日の出" . $sunrise . "\n"; echo "日の入り" . $sunset . "\n"; echo "市民薄明の終わり" . $civil_twilight_end . "\n"; echo "航海薄明の終わり" . $nautical_twilight_end . "\n"; echo "天文薄明の終わり" . $astronomical_twilight_end . "\n"; 参考サイト Sunset and sunrise times API
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】日出、日没、薄明の時間を取得してみた

初めに ダッシュボード作成のために、各種情報を取得する コメントより、date_sun_info関数にて取得できることが判明 ⇒PHPを用い、HP等で表示させる用途を想定 ※Sunset and sunrise times APIを使用予定でした、、 環境 -Windows10 -PHP 8.0.6 パラメータ lat (float): 取得したい場所の緯度、必須 lng (float): 取得したい場所の経度、必須 date (string): YYYY-MM-DDフォーマットにて入力/相対・絶対日時の指定も可能。入力しない場合は現在の時刻を取得する。オプション。 callback (string): Callback function name for JSONP response. Optional. formatted (integer): 0 か 1 (1 がデフォルト). 0の場合はISO 8601にて出力される。オプション 本コードでは$sunset_configにてパラメータをセットしてください。 コード sunset_time_api.php <?php //sunset_apiより日没、薄明時間を取得する date_default_timezone_set('Asia/Tokyo'); $sunset_config = array( 'lat' => '35.00000', 'lon' => '135.0000000', 'date' => 'today', 'formatted' => '0', ); $sunset_json = file_get_contents("https://api.sunrise-sunset.org/json?lat=" . $sunset_config["lat"] . "&lng=" . $sunset_config["lon"] . "&date=" . $sunset_config["date"] . "&formatted=" . $sunset_config["formatted"]); $sunset_array = json_decode($sunset_json, true); //UTC => Timestamp $utc_sunrise = strtotime($sunset_array["results"]["sunrise"]); $utc_sunset = strtotime($sunset_array["results"]["sunset"]); $utc_civil_twilight_end = strtotime($sunset_array["results"]["civil_twilight_end"]); $utc_nautical_twilight_end = strtotime($sunset_array["results"]["nautical_twilight_end"]); $utc_astronomical_twilight_end = strtotime($sunset_array["results"]["astronomical_twilight_end"]); //UTC => JST $sunrise = date("m/d H:i", $utc_sunrise); $sunset = date("m/d H:i", $utc_sunset); $civil_twilight_end = date("m/d H:i", $utc_civil_twilight_end); $nautical_twilight_end = date("m/d H:i", $utc_nautical_twilight_end); $astronomical_twilight_end = date("m/d H:i", $utc_astronomical_twilight_end); echo "日の出" . $sunrise . "\n"; echo "日の入り" . $sunset . "\n"; echo "市民薄明の終わり" . $civil_twilight_end . "\n"; echo "航海薄明の終わり" . $nautical_twilight_end . "\n"; echo "天文薄明の終わり" . $astronomical_twilight_end . "\n"; 参考サイト
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む