前几天做了个自动处理文件的python脚本,目前python脚本需要手动把文件放到特定文件夹下,自动去读取处理;但是老大觉得不方便,让我写了个文件上传页面,然后调用python的脚本,导出处理后的文件;
于是我就开始了,上传功能用php实现的,开始想的是,用php的exec直接调用问题应该不大;
很快,上传页面分分钟就写好了,服务器上python环境也配置好了,问题出现了,我用php传递参数(上传文件的在服务器上的保存路径)调用python脚本,发现没反应!!
然后我想了多种情况,python没权限?php-fpm的执行用户没权限?服务器没配置python变量?然后手动执行了下命令 “python xx.py 路径” 发现可以执行;
奇了怪了,折磨了3天(其实就是每天来到后花一个小时调,调不出来就处理其他的事情),第四天请教了老大,老大让我写个shell,用php调用shell
#!/bin/bash /usr/local/bin/python3/bin/python3 /xxx/xxx/combine.py /xxxx/xxxx4e6c56ecde44ada121adb80cbe58134b.csv /home/xxx/xxx146c04fef96cf9d0186bd49a8c6eb335.csv > /tmp/p.log
结果发现能产生p.log文件,但是没有内容
#!/bin/bash /usr/local/bin/python3/bin/python3 /xxx/xxx/combine.py /xxxx/xxxx4e6c56ecde44ada121adb80cbe58134b.csv /home/xxx/xxx146c04fef96cf9d0186bd49a8c6eb335.csv > /tmp/p.log 2>&1
于是老大又让加了个2>&1,哇,p.log出现错误信息了;
到此终于调通了,其实就是我的python脚本中有一些print输出了中文,然后php的exec中要求是ascci编码,不支持中文,所以就出现编码错误了;
总结下,其实如果能早点调试出错误信息的话不会耽误那么久的,还是自己对linux了解的太少;太菜了!!