无SSH权限下如何通过路由运行Laravel Artisan命令
无SSH权限下通过Laravel路由创建Storage软链接
你提供的路由代码存在一个小问题:Artisan::call()方法只需要传入命令名称,不需要带php artisan前缀。正确的写法如下:
Route::get('create-storage-link', function () { Artisan::call('storage:link'); dd(Artisan::output()); });
关键注意事项:
- 执行后立即删除该路由:公开的GET路由存在安全风险,任何人访问这个URL都会尝试创建软链接,可能导致重复执行或恶意滥用。
- 验证主机权限:部分共享主机(包括Hostinger部分套餐)可能禁用了
symlink()函数,即便执行命令也无法创建软链接。如果执行后没有生成链接且无报错,需要联系主机服务商确认是否允许创建软链接。 - 可选:添加权限验证:如果需要临时保留路由,可增加简单的权限控制,比如限制特定IP:
Route::get('create-storage-link', function () { // 仅允许指定IP访问 if (request()->ip() !== '你的IP地址') { abort(403, '无访问权限'); } Artisan::call('storage:link'); dd(Artisan::output()); });
内容的提问来源于stack exchange,提问作者Shivam Randeri
相关产品推荐
相关产品推荐

