公司服务器原来环境为nginx+php53
因为负责的项目需要,需要更新php版本为php5.6,为了不影响历史遗留项目,选用了安装Apache24+php56,经过nginx反代后双版本共存。
其中遇到了一些问题:

[crit] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
Pre-configuration failed

Action 'configtest' failed.

查资料后统计问题原因如下,所使用的源php默认为NTS版本,apache为TS版本,不兼容导致。

解决方案:
移除libapache2-mod-php5模块,安装libapache2-mod-php5filter模块,Apache2正常启动。

over

工作环境从Ubuntu 14.04 LTS升级到16.04 LTS失败以后,重新安装了ubuntu 16.04,给新系统安装环境时出现了一些问题,Lantern、Teamviewer等第三方工具安装失败。
应该是ubuntu 16.04的软件中心默认配置问题或者是有些bug的原因,安装时并没有提示。以下是解决方案:

  • 使用dpkg -i的方式安装
  • 使用gdebi的方式安装

我们选用第二种方式,因为后者的功能更为强大。
首先要使用gdebi的命令要先安装它

sudo apt install gdebi-core

安装成功后,我们切换到下载的deb安装包的目录执行

sudo gdebi lantern-installer-beta-64-bit.deb

确认后安装成功~

无法从命令行或调试器启动服务,必须首先安装Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务器管理工具或NET START命令启动它
  #### 注册启动服务: 打开CMD —— 注册服务命令 cd c:\windows\Microsoft .NET\Framework\vx.xxx (已安装的.NET版本) InstallUtil.exe D:\xxxxService.exe   (xxxxService是工程名字) net start ComputerService (ComputerService是注册的服务名字) #### 取消注册服务: InstallUtil.exe /u d:\xxxxService.exe

在windows窗体应用开发过程中,为提高性能,会使用到多线程。

如果直接在线程中设置Textbox的Text属性等操作,程序就会抛出了如下问题:

未处理InvalidOperationException

"System.InvalidOperationException"类型的未处理异常在System.Windows.Forms.dll中发生

其他信息:线程间操作无效:从不是创建控件"xxxx"的线程访问它。

一个比较简单的解决方案如下:

将 CheckForIllegalCrossThreadCalls 属性的值设置为 false

访问Windows窗体控件本质上不是线程安全的。如果有多个线程同事操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他线程相关的BUG,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。

可以通过以委托的方式调用来处理线程安全的问题,详情可以移步MSDN官方文档:如何对 Windows 窗体控件进行线程安全调用