質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

9603閲覧

[助けてください]VS CodeでPHPをXdebugでデバッグしたい (MacOS Big Sur)

rapsody

総合スコア7

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/05/15 01:48

編集2021/05/15 08:37

VS CodeでPHPをXdebugでデバッグしたいです。
何故かデバッグボタンを押しても起動されません。

下記の記事を参考にHomebrewでPHP7.4、peclでXdebugをインストールし、
php.iniにXdebugの実行ファイル?であるXdebug.soを書いていますが、Vscodeでデバッグボタンを押しても反応しないです。。。
どなたか原因がわかる方はいらっしゃいますでしょうか?
1週間ほどこれの解決に時間を取られています。

https://qiita.com/kiwi26/items/7e94fb042c5ae819d2d8

ちなみに、1週間ほど前にXdebugをインストールし、VSCodeでデバッグをできるようにしたのですが、その直後にはデバッグできていました。そのあと、何がトリガーになったかわからないですが、デバッグできなくなりました。

環境

  • macOS Big Sur 11.3.1
  • Visual Studio Code : Version: 1.56.2 (Universal
  • VSCodeにて、Extension(PHP Debug 1.15.1をインストール済み)

試したこと

以下、↓を参考にしています。

https://qiita.com/kiwi26/items/7e94fb042c5ae819d2d8

①簡単に↓
  • VSCode、PCの再起動
  • php をbrewにてアンインストールして、再インストール。link、PATHは記述ずみ
  • peclにてXdebugのアンインストール、再インストール
  • php.iniにzend_extensionを記述

↑もしかしたら、php.iniやxdebug.soの場所や値を間違えているのかも知れません。。。
PHPのいくつかのバージョンを何度もbrewで入れ直したので、他のPHPが邪魔しているのかも?知れません。。。

②具体的に↓(実際のコマンドや結果を貼り付けます)
//brewでインストールしたPHPの設定ファイルを削除? $ rm /usr/local/etc/php/7.4/conf.d/* $ brew untap homebrew/php Error: No available tap homebrew/php. $ brew list | grep php php@7.4 phpmyadmin $brew uninstall --force php@7.4 Uninstalling php@7.4... (497 files, 72.4MB)
//brewでインストール $brew install php@7.4 //成功 To have launchd start php@7.4 now and restart at login: brew services start php@7.4 Or, if you don't want/need a background service you can just run: php-fpm ==> Summary ???? /usr/local/Cellar/php@7.4/7.4.19_1: 497 files, 72.4MB brew link --force php@7.4 Linking /usr/local/Cellar/php@7.4/7.4.19_1... 25 symlinks created. If you need to have this software first in your PATH instead consider running: echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> /Users/xxx/.bash_profile echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> /Users/xxx/.bash_profile //PATHを通す $ echo 'export PATH="/usr/local/opt/php@7.4/bin:$PATH"' >> /Users/xxx/.bash_profile $ echo 'export PATH="/usr/local/opt/php@7.4/sbin:$PATH"' >> /Users/xxx/.bash_profile $ source ~/.bash_profile
// Xdebugのアンインストールとインストール $ which pecl /usr/local/opt/php@7.4/bin/pecl $ pecl uninstall xdebug Extension xdebug disabled in php.ini uninstall ok: channel://pecl.php.net/xdebug-3.0.4 $ pecl install xdebug //冒頭の結果表示↓ WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update downloading xdebug-3.0.4.tgz ... Starting to download xdebug-3.0.4.tgz (215,870 bytes) .............................................done: 215,870 bytes 87 source files, building running: phpize Configuring for: PHP Api Version: 20190902 Zend Module Api No: 20190902 Zend Extension Api No: 320190902 //最後の結果表示↓ Build process completed successfully Installing '/usr/local/Cellar/php@7.4/7.4.19_1/pecl/20190902/xdebug.so' install ok: channel://pecl.php.net/xdebug-3.0.4 Extension xdebug enabled in php.ini $ php -i | grep php.ini PHP Warning: Failed loading Zend extension 'xdebug.so' (tried: /usr/local/Cellar/php@7.4/7.4.19_1/lib/php/20190902/xdebug.so (dlopen(/usr/local/Cellar/php@7.4/7.4.19_1/lib/php/20190902/xdebug.so, 9): image not found), /usr/local/Cellar/php@7.4/7.4.19_1/lib/php/20190902/xdebug.so.so (dlopen(/usr/local/Cellar/php@7.4/7.4.19_1/lib/php/20190902/xdebug.so.so, 9): image not found)) in Unknown on line 0 Configuration File (php.ini) Path => /usr/local/etc/php/7.4 Loaded Configuration File => /usr/local/etc/php/7.4/php.ini //zend extensionの読み込みに失敗しているっぽいので、php.iniに手動で書いてあげる必要があると考え、 $vim /usr/local/etc/php/7.4/php.ini

php.iniがこちら↓

; ↓xdebug直後、開いたら↓が記述されていた。 ; zend_extension="xdebug.so" ; 新たに追記↓ zend_extension="/usr/local/Cellar/php@7.4/7.4.19_1/pecl/20190902/xdebug.so" [PHP] xdebug.mode=debug xdebug.start_with_request=yes xdebug.client_port=9000
//Xdebugが入っていることを確認 $ php -m ・ ・ ・ tokenizer xdebug xml xmlreader xmlrpc xmlwriter ・
// php7.4を再起動? $ brew services restart php@7.4 Stopping `php@7.4`... (might take a while) ==> Successfully stopped `php@7.4` (label: homebrew.mxcl.php@7.4) ==> Successfully started `php@7.4` (label: homebrew.mxcl.php@7.4)

最終的なphpのversionがこちらです。Xdebug v3.04が入っており、なんの問題もないように感じます。

$ php -v PHP 7.4.19 (cli) (built: May 13 2021 06:28:47) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Xdebug v3.0.4, Copyright (c) 2002-2021, by Derick Rethans with Zend OPcache v7.4.19, Copyright (c), by Zend Technologies

いざVSCodeでデバッグボタンを押し、右三角ボタンを実行しようとしてみると、↓ なんの反応もありません。
DEBUG CONSOLEにもターミナルにも出力されないです。

イメージ説明

再度、↑画像の状態のまま、右三角ボタンを押すと、

listen EADDRINUSE: address already in use :::9003

とエラーが吐かれます。

イメージ説明

ちなみに、launch.jsonは↓です。

launch.json

1{ 2 // Use IntelliSense to learn about possible attributes. 3 // Hover to view descriptions of existing attributes. 4 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 8 { 9 "name": "Listen for Xdebug", 10 "type": "php", 11 "request": "launch", 12 "port": 9003 13 }, 14 { 15 "name": "Launch currently open script", 16 "type": "php", 17 "request": "launch", 18 "program": "${file}", 19 "cwd": "${fileDirname}", 20 "port": 9003 21 } 22 ] 23} 24

原因がわかる方がいらっしゃったら、どうかご教授いただけると幸いです。
よろしくお願いいたします。

追記

ちなみに、1週間ほど前にXdebugでデバッグができるようにしたときに残した、備忘録がXdebug のインストール PHP デバッグ Mac Big Surになります。 もしかしたら、色々いじっちゃって、できなくなった可能性もあるので、貼らせていただきます。

追記

localhostで、ビルドインサーバを立ち上げて、Xdebug自体が動いているか確認してみたところ

$ php -S localhost:8000 [Sat May 15 17:29:25 2021] PHP 7.4.19 Development Server (http://localhost:8000) started [Sat May 15 17:29:30 2021] [::1]:54280 Accepted [Sat May 15 17:29:30 2021] [::1]:54281 Accepted [Sat May 15 17:29:30 2021] Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-( [Sat May 15 17:29:30 2021] [::1]:54280 [200]: GET /test.php [Sat May 15 17:29:30 2021] [::1]:54280 Closing
Could not connect to debugging client. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(

↑のエラーが発生していることに気がつきました。
これは、https://www.fixes.pub/program/183900.htmlによると、Xdebugがデバッグクライアントへの接続に失敗した場合、そのことを通知するようです。

そこで、ポート番号を9000にすると、エラーがなくなりましたが、

vim /usr/local/etc/php/7.4/php.ini

Xdebugが動いていないように思います。(var_dump()が整形されていないため)

イメージ説明

どういう現象なのでしょうか?汗汗

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

https://qiita.com/rapsody0919/items/c75a3e2a5188e5429cfd
最終的に、もう一度PHPをbrewで入れ直し、公式インストール(https://xdebug.org/wizard) に沿って、やり直したところ、無事デバッグすることができました。
https://xdebug.org/wizardの中で、xdebug.soのコピーをするコマンドがありますが、20190902というフォルダができていないことも原因の一つでした。
cp する前に

$ mkdir 20190902

でフォルダを作成してからcpコマンドを実行しました。
また、VSCodeの、「Listen for xdebug」でずっとデバッグしていたことも原因の一つでした。

環境構築するときは、コマンドをしっかりと理解してパスなど確認することが、結果的に時間を短縮できると学びました。

投稿2021/05/15 12:48

rapsody

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問