首页 > 解决方案 > 如何使用在 localhost 上运行的 docker 在 PHP 代码中模拟 console.log

问题描述

我正在使用 Docker 制作一个 Laravel/Reactjs 应用程序。在 reactjs 中编码,我经常使用 console.log 进行调试,但我找不到任何类似的东西来调试我的 PHP 代码。假设我在 PHP 文件中想要检查我的 id 变量是否是我认为的那样,我想做以下事情(Auth::user() 返回一个有 id 的用户)

function somePHPfunction {
$user = Auth::user();
$id = $user->id;
console.log($id);
}

这当然行不通。

我使用 vscode 作为我的编辑器,并且我尝试使用 Xdebug 设置扩展 PHP Debug,但我无法让它工作,我认为这可能是由于 docker 的工作方式。我已经尝试了 以下指南,但也无法使其工作(它适用于 mac,我使用的是 linux)。

我也尝试过运行不同的脚本(可以在此处找到一些示例),但它们都不能在前面提到的代码中运行。

下面我发布了我的 docker 文件、我的 docker-compose.yaml 文件和我的 .env 文件(该项目是在 Laravel 中制作的)。

dockerfile

FROM php:7.2-apache

RUN a2enmod rewrite

RUN rm /bin/sh && ln -s /bin/bash /bin/sh && \
apt-get update && apt-get install --no-install-recommends -y \
  libjpeg-dev \
  libpng-dev \
  libpq-dev \
  curl \
  wget \
  vim \
  git \
  unzip \
  mysql-client \
;

RUN docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \
docker-php-ext-install -j "$(nproc)" \
  gd \
  opcache \
  pdo_mysql \
  pdo_pgsql \
  zip \
;

RUN apt-get clean && rm -rf /var/lib/apt/lists/*

WORKDIR /var/www/html

RUN curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
ln -s /root/.composer/vendor/bin/drush /usr/local/bin/drush

COPY scan-apache.conf /etc/apache2/sites-enabled/scan-apache.conf

docker-compose.yaml 版本:'3.3'

services:

app:
image: image
build: .
container_name: container
env_file:
  - .env
ports:
  - "4321:80"
volumes:
  - .:/var/www/html
depends_on:
  - mysql

mysql:
image: mysql/mysql-server:5.7
# build: ./docker/mysql
hostname: mysql
container_name: scan-db
env_file:
  - .env
volumes:
  - mysql-data-scan-redcap:/var/lib/mysql

volumes:
mysql-data-scan-redcap:

networks:
default:
external:
  name: webproxy

我希望有一种方法可以与 javascript 中的 console.log 一样,所以我可以看到运行时发生了什么。

标签: phpdockerdebugging

解决方案


推荐阅读