Slackware 15 默认PHP 8.0.x不满足Laravel 10≥8.1要求,且缺mbstring、intl等关键扩展;须通过SlackBuilds编译PHP 8.1+并启用--enable-intl等参数,再配腾讯镜像安装Composer,Nginx需手动配置realpath_root与try_files。

Slackware 15 默认不带 PHP 8.1+、Composer 或现代扩展,直接跑 composer create-project laravel/laravel 必然失败。核心问题不是“能不能装”,而是 Slackware 的包管理(slackpkg)不提供 Laravel 所需的 PHP 版本和扩展组合,必须手动编译或换源。
确认 PHP 版本与扩展是否真实可用
Slackware 15.0 默认 PHP 是 8.0.x(php -v 输出),但 Laravel 10 强制要求 ≥ 8.1,且必须启用 mbstring、openssl、pdo、tokenizer、xml、ctype、json、intl —— 这些在 Slackware 官方仓库里要么缺失,要么版本太老。
- 运行
php -m | grep -E "(mbstring|openssl|pdo|tokenizer|xml|ctype|json|intl)",缺任何一项都不能继续 -
intl在 Slackware 上几乎肯定没有:它依赖icu4c,而 Slackware 15 的icu4c包是 70.x,PHP 编译时若没指定--with-icu-dir就不会启用 - 别信
php -v显示的版本号,要验证php --ini加载的php.ini路径,并打开该文件检查extension=行是否取消注释且路径正确
用 SlackBuilds 编译 PHP 8.1+ 并启用关键扩展
Slackware 社区维护的 SlackBuilds.org 提供了 PHP 8.1 和 8.2 的构建脚本,这是最稳妥的方式。跳过官方仓库,直接从 SBo 编译:
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
- 下载并解压
php的 SlackBuild(如php-8.1.29),进目录执行./php.SlackBuild - 关键:编辑
php.SlackBuild,在./configure行末尾追加:--enable-intl --with-icu-dir=/usr --with-openssl --with-pdo-mysql --enable-mbstring --enable-xml - 确保系统已装
icu4c(从 SBo 装)、mysql-client、openssl-solibs等依赖,否则 configure 会报错退出 - 编译完运行
upgradepkg --install-new /tmp/php-*.t?z,再验证php -m是否齐备
配置 Composer 镜像并创建项目
Slackware 没有预装 Composer,也不能指望 curl 直接拉 GitHub —— 国内网络下大概率卡在 Installing dependencies 或报 zlib_decode(): data error。
- 先装 Composer:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - 立刻切国内镜像(腾讯云最稳):
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ - 创建项目时显式锁版本,避免 Composer 自动拉 Laravel 11:
composer create-project laravel/laravel:^10.0 myapp - 若仍卡住,加内存限制:
COMPOSER_MEMORY_LIMIT=-1 composer create-project laravel/laravel:^10.0 myapp
Nginx 伪静态和 root 必须手写,不能依赖模板
Slackware 默认用 Apache,但 Laravel 推荐 Nginx;若你用 Nginx(比如从 SBo 装的 nginx),它的配置完全空白,没有任何 Laravel 模板可选。
- 站点
root必须指向myapp/public,不是项目根目录 —— 否则访问直接 404 或下载index.php -
location /块必须写try_files $uri $uri/ /index.php?$query_string;,不能用rewrite,Nginx 1.20+ 下 rewrite 会导致PATH_INFO解析失败,Laravel 路由白屏 -
location ~ \.php$块里必须有fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;,缺这行$_SERVER['SCRIPT_FILENAME']为空,RouteServiceProvider初始化失败 - 改完配置后运行
nginx -t && nginx -s reload,不要只改文件不重载
Slackware 部署 Laravel 10 最容易被忽略的点是:PHP 编译时没加 --enable-intl 导致后续所有依赖解析失败,以及 Nginx 配置里漏掉 $realpath_root —— 这两个问题不会报明显错误,只会让页面空白或路由 404,排查起来极耗时间。

















