PHP中调用SVN命令更新网站方法(解决文件名包含中文更新失败的问题)
2024-08-26 11:15:58
想说写一个通过网页就可以执行 SVN 升级的程序,结果并不是我想得那样简单,有一些眉角需要注意的说。
先以 Apache 的用户帐号执行 SVN checkout,这样 Apache 才有 SVN 的链结权力,才可以通过网页执行 SVN update
su -s /bin/bash www-data
cd /var/www
svn checkout http://www.xxx.com/svn/my_site
在用 PHP 执行 shell 指令前要加上 export LANG=C.UTF-8 的环境声明,不然 SVN update 时遇到中文会出现 error,Ubuntu 的 Apache 默认是 LANG=C
接着要为 SVN 补上 --accept theirs-full 的参数,这是当冲突发生时,都以 SVN Server 的文件版本为主
最后再加上 2>&1,让 PHP 可以取得包含错误的所有信息
<?php
putenv('LANG=C.UTF-8'); // 根据Linux设置语言环境变量,解决svn更新时中文名称导致的问题,也可以使用putenv('LANG=en_US.UTF-8');
$result = shell_exec('svn update --accept theirs-full /var/www/my_site 2>&1');
echo nl2br($result);
最新文章
- XStream简单入门
- HTML5表单
- React(JSX语法)-----JSX基本语法
- 获取客户端真实ip
- 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!
- codeforces 601A The Two Routes(最短路 flody)
- android AsyncHttpClient 开源框架的使用
- Codeforces Round #326 (Div. 2) B. Duff in Love 分解质因数
- opencv 2.46与visual studio 2012 配置方法
- Qt实现360安全卫士10.0界面(编译时出现的一些问题)
- 基本HTML5文件结构
- Binary Tree Inorder Traversal(转)
- Nosql简介 Redis,Memchche,MongoDb的区别
- antlr v4 使用指南连载5——如何编写词法定义
- 数据结构C语言版-队列
- Appium Demo
- 在kubernetes集群上用helm安装Datadog(Monitoring)
- mothur reverse.seqs 将序列反向互补
- EXCEL FAQ
- Django 中 python manage.py makemigrations 与 python manage.py migrate
热门文章
- Jmeter-调整占用内存解决内存溢出
- echo命令的简单用法和实例
- 6. webshell文件上传分析溯源
- ASP.NET学习笔记(三)ASP Global.asa 文件
- LeetCode: 669 Trim a Binary Search Tree(easy)
- 修正linux系统时间
- 剑指Offer的学习笔记(C#篇)-- 构建乘积数组
- 1.函数的结构,调用,传参,形参,实参,args,kwargs,名称空间,高阶函数
- Spark 学习(二)
- [題解](函數下整點個數?)luogu_P4132_BZOJ_2659_算不出的等式