Как включить вход xdebug в Laravel sail?

#php #laravel #docker #xdebug

Вопрос:

Я пытаюсь включить вход xdebug в Laravel 8, используя пакет sail для docker.

Согласно xDebugs, журнал документов появится автоматически при установке значения xdebug.log в значение.

Это то, что я пытался:

  1. Опубликуйте файлы sail с помощью sail artisan sail:publish
  2. Это создало /docker/7.4 , /docker/8.0 , /docker/8.1
  3. С sail php -v помощью я увидел, что я использую php 8.0.12
  4. Теперь я добавил xdebug.log =/var/www/html/storage/app к docker/8.0/php.ini
  5. Я запускаю sail build --no-cache и перезапускаю контейнер. Это занимает около 8 минут.

К сожалению, проверка phpinfo() показывает, что xdebug.log это не имеет значения: введите описание изображения здесь

Согласно моему файлу docker, php.ini он должен был быть скопирован: COPY php.ini /etc/php/8.0/cli/conf.d/99-sail.ini поэтому я хотел попытаться прочитать файл. Чтобы сделать это, я попробовал следующее:

  1. Войдите в контейнер, используя sail shell
  2. Идти к cd /etc/php/8.0/cli/conf.d/
  3. Чтение файла с помощью cat 99-sail.ini

Таково содержание:

 [PHP]
post_max_size = 100M
upload_max_filesize = 100M
variables_order = EGPCS

# Extensions...
extension=swoole.so

# Zend Extensions...
zend_extension=xdebug.so
 

Однако во /docker/8.0/php.ini мне есть только это:

 [PHP]
post_max_size = 100M
upload_max_filesize = 100M
variables_order = EGPCS
xdebug.log =/var/www/html/storage/app
 

Это почему? Я также хотел бы попробовать просто отредактировать файл напрямую, но vim неизвестно. Также команда sudo неизвестна, хотя изображение ubuntu:21.04. Я пытался установить vim, но у меня отсутствуют права доступа.

введите описание изображения здесь

Ответ №1:

COPY php.ini /etc/php/8.0/cli/conf.d/99-sail.ini

Вы можете просто добавить конфигурацию Xdebug в php.ini файл, который будет скопирован. Но если вы обновите его, вам нужно будет перестроить/перезапустить свой контейнер.

Комментарии:

1. Именно это я и пытался сделать. Я добавил значение docker/8.0/php.ini , но оно не было скопировано. Вместо этого 99-sail.ini выглядит совсем не так, как любой файл php.ini в папке docker/

Ответ №2:

Похоже, это приложение Laravel использовало свой собственный файл dockerfile. Я забыл проверить docker-compose.yml . Внутри laravel.test была сборка, указывающая на другой файл. Вот почему php.ini внутри файла docker не был скопирован.

Кроме того, мне пришлось использовать путь к фактическому файлу журнала и поместить его в такие цитаты:

 xdebug.log ="/var/www/html/storage/app/xdebug.log"