O XDebug oferece a diretiva de configuração "xdebug.profiler_enable_trigger" que permite ativar a criação de perfil passando o parâmetro GET ou POST "XDEBUG_PROFILE" ao chamar um script via HTTP. Isso é útil se você não deseja criar um perfil para TODOS os seus scripts, mas apenas para alguns casos especiais sem sempre alterar sua configuração do PHP.
Existe uma maneira de obter o mesmo comportamento para programas PHP de linha de comando? Tentei passar o "XDEBUG_PROFILE" como um argumento de linha de comando, mas não funcionou.
Em geral, a linha de comando de criação de perfil PHP funciona bem, mas eu gostaria de ter a mesma flexibilidade por chamada de um navegador e servidor HTTP.
Alguma sugestão?
php
configuration
command-line
profiling
xdebug
selfawaresoup
fonte
fonte
Respostas:
Você pode passar configurações INI com a
-d
bandeira:php -d xdebug.profiler_enable=On script.php
.fonte
alias phpp="php -d xdebug.profiler_enable=1"
. Dessa forma, quando você não deseja criar um perfil, basta usarphp
e quando usarphpp
.alias xphp="php -d xdebug.profiler_enable=On -d xdebug.profiler_output_dir=."
. Isso sempre armazena a saída de depuração no seu diretório de trabalho atual.phpp.cmd
arquivo, contendophp -d xdebug.profiler_enable=On %*
então você pode simplesmente executarphpp <args>
.Eu consegui isso trabalhando no Ubuntu / Netbeans por:
Então é simplesmente um caso de iniciar a depuração no netbeans e executar "php myscript.php" na linha de comando.
fonte
com o PhpStorm no servidor remoto, eu uso este comando:
onde
server_name
significa o nome do servidor na conifugação do projeto PhpStormfonte
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}'"
então quando eu quero depurar eu uso xphp em vez de phpConforme descrito na página Xdebug Remote Debugging , a criação de perfil também pode ser ativada através da
XDEBUG_CONFIG
variável de ambiente, incluindo uma diretiva "profile_enable = 1":fonte
Processo semelhante, mas diferente, para que ele funcione com o Netbeans durante o desenvolvimento em uma VM.
É necessário passar o sinalizador ativado remotamente, o sinalizador de início automático, o sinalizador ide e o nome do seu host remoto.
fonte
Eu criei um script de shell para lidar com a depuração do cliente.
nome do script: phpdebug
Eu coloquei esse script em
/usr/bin
e dei permissões de execução.O script pega os argumentos passados no phpdebug e chama php com os argumentos xdebug e anexa os argumentos passados no script shell, o $ * no final.
fonte
XDEBUG_CONFIG
variável de ambiente. Apenas isso e axdebug.remote_host
configuração fizeram funcionar.No PhpStorm 7 usando WAMP, consegui que isso funcionasse, copiando minhas configurações de xdebug já existentes de C: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini para a seção xdebug de C: \ wamp \ bin \ php \ phpX.YZ \ php.ini. Então eu executei meu script assim:
Isso até funcionou para depurar scripts de artesãos laravel
fonte
Documentação de Jetbrains
Para iniciar o script com depuração usando opções de linha de comando PHP Defina uma variável de ambiente que informa ao XDebug para conectar-se ao IDE:
Windows / MacOS / Linux
Aqui idekey deve ter um valor aleatório.
Inicie o PHP com as seguintes opções de linha de comando:
Você pode usar 10.0.2.2 em vez de 127.0.0.1 com o Vagrant (consulte a pergunta SO relacionada).
fonte