#php #laravel #docker #xdebug
Вопрос:
Я пытаюсь включить вход xdebug в Laravel 8, используя пакет sail для docker.
Согласно xDebugs, журнал документов появится автоматически при установке значения xdebug.log
в значение.
Это то, что я пытался:
- Опубликуйте файлы sail с помощью
sail artisan sail:publish
- Это создало
/docker/7.4
,/docker/8.0
,/docker/8.1
- С
sail php -v
помощью я увидел, что я использую php 8.0.12 - Теперь я добавил
xdebug.log =/var/www/html/storage/app
кdocker/8.0/php.ini
- Я запускаю
sail build --no-cache
и перезапускаю контейнер. Это занимает около 8 минут.
К сожалению, проверка phpinfo() показывает, что xdebug.log
это не имеет значения:
Согласно моему файлу docker, php.ini
он должен был быть скопирован: COPY php.ini /etc/php/8.0/cli/conf.d/99-sail.ini
поэтому я хотел попытаться прочитать файл. Чтобы сделать это, я попробовал следующее:
- Войдите в контейнер, используя
sail shell
- Идти к
cd /etc/php/8.0/cli/conf.d/
- Чтение файла с помощью
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"