You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel Sail应用内执行ping命令

在Laravel Sail环境中执行ping命令的解决方案

出现sh: 1: ping: not found错误的原因是:Laravel Sail默认使用的PHP基础镜像(如laravelsail/php83-composer)是Debian/Ubuntu的精简版本,默认未安装包含ping命令的iputils-ping软件包。

解决方案一:临时安装ping(容器重启后失效)

  1. 进入Sail容器:
sail shell
  1. 在容器内执行安装命令:
apt-get update && apt-get install -y iputils-ping
  1. 退出容器后重新运行你的代码,即可正常执行ping命令。

解决方案二:永久安装ping(自定义镜像,重启不失效)

如果需要长期保留ping工具,可通过修改Dockerfile构建自定义镜像:

  1. 在项目根目录创建docker/[你的PHP版本]/Dockerfile(例如PHP8.3则创建docker/8.3/Dockerfile)
  2. 写入以下内容:
FROM laravelsail/php83-composer:latest

RUN apt-get update && apt-get install -y iputils-ping && rm -rf /var/lib/apt/lists/*
  1. 修改项目根目录的docker-compose.yml,将PHP服务的build配置指向自定义Dockerfile:
services:
    laravel.test:
        build:
            context: ./docker/8.3
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        # 其余原有配置保持不变
  1. 重新构建镜像并启动容器:
sail build --no-cache && sail up -d

代码优化建议

推荐使用Process的数组参数形式,避免shell注入风险:

$result = Process::run(['ping', '-c', '3', 'google.com']);

// 查看执行结果和错误输出
dd($result->output(), $result->errorOutput());

内容的提问来源于stack exchange,提问作者Ryan H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:39:51