Bir komut satırı PHP komut dosyası için XDebug profiler nasıl tetiklenir?


195

XDebug, HTTP üzerinden bir komut dosyası çağırırken GET veya POST parametresini "XDEBUG_PROFILE" ileterek profili etkinleştirmeyi sağlayan "xdebug.profiler_enable_trigger" yapılandırma yönergesini sunar. Komut dosyalarınızın TÜMÜNÜ profillemek istemiyorsanız, ancak PHP yapılandırmanızı her zaman değiştirmeden yalnızca birkaç özel durum için profil oluşturmak istiyorsanız bu kullanışlıdır.

Komut satırı PHP programları için aynı davranışı elde etmenin bir yolu var mı? "XDEBUG_PROFILE" komut satırı bağımsız değişkeni olarak geçmeye çalıştım ama işe yaramadı.

Genel olarak, komut satırı PHP profilleme iyi çalışıyor, ancak bir tarayıcı ve HTTP sunucusuyla aynı arama başına esnekliğe sahip olmak istiyorum.

Baska öneri?


Üzgünüm, bunu da deniyorum ama anlamıyorum. "XDEBUG_PROFILE" parametresinde ne olmalı?
Andresch Serj

Hiç olmadığı sürece Parametrede ne olduğu önemli değildir.
selfawaresoup

XDEBUG_PROFILE ortam değişkeni için destek eksikliği , XDebug hata izleyicisindeki hata 413'tür .
outis

Yanıtlar:


258

Sen INI ayarlarını geçebilir -dbayrak: php -d xdebug.profiler_enable=On script.php.


39
* Nix tabanlı sistemlerde, örneğin bir takma ad oluşturarak kullanımına biraz daha kolay bu yapabilirsiniz: alias phpp="php -d xdebug.profiler_enable=1". Bu şekilde profil oluşturmak istemediğinizde phpve kullandığınızda kullanın phpp.
JC Yamokoski

14
Ben bu benim için woked böylece profilci çıkışı, hem de kaydedilmesini istedi hangi dizin belirtmek zorunda: alias xphp="php -d xdebug.profiler_enable=On -d xdebug.profiler_output_dir=.". Bu, her zaman hata ayıklama çıktısını geçerli çalışma dizininizde depolar.
Lars Nyström

Evet, Win7 ortamında Eclipse ve XAMPP altındayım. İşe yarıyor.
06:24

4
Windows'da, PATH dir içinde bir phpp.cmddosya oluşturabilirsiniz, bunu içeren php -d xdebug.profiler_enable=On %*basitçe çalıştırabilirsiniz phpp <args>.
Gras Çifte

43

Ben Ubuntu / Netbeans üzerinde bu çalışma var:

  • xdebug yapılandırma satırlarını /etc/php5/apache2/php.ini dosyasından /etc/php5/cli/php.ini dosyasına kopyalama
  • hata ayıklama oturumunun adıyla bir ortam değişkeni ayarlamak (hata ayıklamaya başladığınızda sayfanın urb'lerinin url'sindeki sorgu dizesinden alabilirsiniz) komut: export XDEBUG_CONFIG = "idekey = netbeans-xdebug"

Sonra sadece netbeans hata ayıklama ve komut satırında "php myscript.php" yapmak bir durumdur.


2
Not: Hata ayıklayıcınızı dinlemeye devam etmek ve bir PHP komutuyla tetiklemek istemiyorsanız, şunu kullanabilirsiniz: "unset XDEBUG_CONFIG".
Dan LaManna

Yukarıdaki cevap ;-) değilken bu aslında benim için çalışıyor
Jonathan Liuti

4
Bu hata ayıklama ile ilgilidir. Soru profilleme ile ilgiliydi (betiğin performansını analiz etmek, hangi işlevlerin uzun zaman aldığını vb.)
Matthew Flaschen

32

PhpStorm uzak web sunucusu üzerinde bu komutu kullanın:

XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` myscript.php

nerede server_namePhpStorm proje conifuguration sunucu adı gelecektir


5
Bunu .bash_aliases alias xphp="XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=example.com" php -d memory_limit=1G -d xdebug.remote_host=echo $ SSH_CLIENT | cut -d \ "= \" -f 2 | awk '{print $ 1}' "yani hata ayıklamak istediğimde php yerine xphp kullanıyorum
oliver nadj

19

Xdebug Uzaktan Hata Ayıklama sayfasında açıklandığı gibi , profil oluşturma, XDEBUG_CONFIG"profile_enable = 1" yönergesi dahil edilerek ortam değişkeni ile de etkinleştirilebilir :

XDEBUG_CONFIG="profiler_enable=1" php ...

Bu, en erişilebilir yöntem olduğu için kabul edilen cevap olmalıdır. PHP ikilisi sarılmış olabilir, dokunmak istemediğiniz yerlerde #! / X / php tercüman olarak ayarlanmış olabilir. Env değişkenini kullanarak seçici olarak etkinleştirilebilir
John

11

Bir VM üzerinde geliştirirken Netbeans ile çalışmasını sağlamak için benzer, ancak farklı bir süreç.

Uzaktan etkin bayrağı, otomatik başlangıç ​​bayrağı, ide bayrağı ve uzak ana bilgisayarınızın adını girmeniz gerekir.

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php

4

İstemci hata ayıklamasını işlemek için bir kabuk komut dosyası oluşturdum.

komut dosyası adı: phpdebug

#!/usr/bin/ksh
php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*

Bu senaryoyu içine yerleştirdim /usr/bin ve yürütme izinleri verdim.

Komut dosyası phpdebug'a aktarılan argümanları alır ve xdebug argümanlarıyla php'yi çağırır ve sonunda kabuk komut dosyasına ($ *) aktarılan argümanları ekler.


Evet, zaten benim durumumda, tek ihtiyacım uzak ana bilgisayarım için INI ayarı eklemek oldu. Bu bir PHP CLI komut benim IDE hata ayıklama yapmak için gereken tek şeydi.
Spencer Williams

Aslında, XDEBUG_CONFIGortam değişkenini de ayarlamam gerekiyordu . Sadece bu ve xdebug.remote_hostayar işe yaradı.
Spencer Williams

2

WAMP kullanarak PhpStorm 7'de zaten çalışan xdebug ayarlarımı C: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini'den C: \ wamp \ bin \ php \ phpX.YZ \ php.ini. Sonra betiğimi şöyle çalıştırdım:

php -d xdebug.idekey=PHPSTORM script.php

Bu bile laravel esnaf komut dosyalarında hata ayıklamak için çalıştı

php -d xdebug.idekey=PHPSTORM artisan db:seed --force

0

Jetbrains'ten Belgeler

Komut dosyasını PHP komut satırı anahtarlarını kullanarak hata ayıklama ile başlatmak için XDebug'a IDE'ye bağlanmasını söyleyen bir ortam değişkeni ayarlayın:

Windows / MacOS / Linux

export XDEBUG_CONFIG="idekey=123"  

Burada idekey rastgele bir değere sahip olmalıdır.

PHP'yi aşağıdaki komut satırı seçenekleriyle başlatın:

php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php

Vagrant ile 127.0.0.1 yerine 10.0.2.2 kullanabilirsiniz (ilgili SO sorusuna bakın).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.