php.ini文件神秘失踪

win_10 系统下wampserver中的php.ini文件神秘失踪,没有发现文件失踪的原因,在此留个记录。

我的系统是win_10系统,安装的是wampserver_3.1.3 ,32位的版本,今天早上启动系统后,开启wampserver,然后运行本地的开发项目,发现报错。错误信息大致的意思是说没有发现:Phalcon\Config\Adapter\Php  这个类。

这个是phalcon框架用来载入配置文件的啊,怎么会找不到这个类呢,近两天没有更新相关的东西,找不到类肯定是phalcon载入出问题了。

phpinfo(),查看信息发现phalcon模块不在了,查看ext文件夹下,phalcon.dll扩展还在,再看信息中,显示php.ini文件不存在。进入wampserver目录中php.ini文件的目录,发现php.ini文件确实不见了。我很确认最近相关的东西都没动过,并且昨天直到下班,我的wampserver还是可以正常运行的。

将原始的php.ini文件拷贝一份到配置目录,重新写入extension=phalcon;后问题解决。

问题解决了,疑惑没有解决,考虑到系统自行删除php.ini文件的可能性应该没有,想到是不是杀毒软件隔离了,查看也不是。全盘杀毒也没有发现病毒,再说,有什么病毒会专门针对wampserver的php.ini文件?

最终没有发现php.ini文件消失的原因,在此留个记录。

phalcon 访问IndexController 中只能访问indexAction方法,访问不了testAction

phalcon 访问IndexController 中只能访问indexAction方法,访问不了testAction
但是可以访问ArticleController里面的任意方法
看说是Apache 的rewrite问题

但是我的.htaccess文件都是按照文档里面的。

两个.htaccess

第一个

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule  ^$ public/    [L]
<span">RewriteRule  ((?s).*) public/$1 [L] 
</IfModule>

public目录下面的.htaccess中

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L] 
</IfModule>

访问路由 localhost/index/test访问不到,但是localhost/index.php?_url=/index/test可以访问得到

解决方法:

直接打印 $_request,发现当路径为 localhost/index/test 的时候,没有_url参数,判断是url重新没成功。将 RewriteCond %{REQUEST_FILENAME} !-f 这行去掉,发现_url 的值是 index.php/test

也就是说apache没有将index/test 看成一个整体,分开请求了,先请求index再请求test,当index不存在时,直接去找index.php,index.html,此时index匹配成功重写取消,而index下的test没有匹配成功,重写后就成了index.php/test了。那么apache为什么不是把index/test看成一个整体,而是分开去处理呢?

怀疑是因为httpd.conf中打开了允许列出目录的功能 mod_autoindex;并设置了Options Indexes允许目录浏览,受目录浏览影响导致重写问题,

取消掉Options 的其他参数,仅保留FollowSymLinks参数,重启apache后,index/test 可以正常访问了

难道真是目录浏览功能的问题?

Options +Indexes +Includes +FollowSymLinks +MultiViews

配置中一共有四个参数,挨个试,最后发现是受MultiViews参数影响。。。但是具体为什么就不清楚了,

ps:出现该问题的工具是wampserver 3.0.6 64bit 版本,32bit版本的没出现该问题,老版的apache也没出过现该问题,猜测可能是apache版本升级进行了什么调整导致的,具体原因再论。

2018-11-28 更新
今天看到一篇文章,标题为: apache的MultiViews的问题

文章来源:https://blog.csdn.net/u014359108/article/details/70859651

该博文介绍了:

MultiViews的作用是当访问到目录中不存在的对象时,
如访问”http://localhost/test/target”,
则apache会寻找该目录下的所有target.*文件.
如果test目录下存在target.jpg文件,
则会把这个文件返回给客户,
而不是返回出错信息.
再分析一下我们现在面对的实例.由于MultiViews的特性,
当访问“http://servername/Index/index”时.
由于根目录下存在index.php文件
所以上面的访问会变成这样:
“http://servername/Index.php/index”

到这里,就清楚为什么httpd.conf中有MultiViews 配置是

Options +FollowSymLinks +MultiViews

phalcon 访问indexController 的方法是就只能访问indexAction()了

执行 rm -rf /bin 命令后

不小心删除了/bin目录,对于我们这种对系统认识不太高的人来说,的确是受到了灾难性的打击,但是静下心来好好搜索分析,还是能找到解决办法的,跨过了一个坎,就是一次成长,亲们,发现php的强大了吗^_^!

由于服务器被挖矿程序黑了,cpu占到100%,在删除相关问题文件的时候,不小心执行了 rm -rf /bin 命令,然后再删除另一个恶意文件时,发现rm命令不能用了,查询一下,发现ls和vi这些个基本命令全都不可用了,这下发现自己闯大祸了。线上服务器出问题从来没有小问题。

什么都不敢动了,赶紧网上查解决办法,网上大体上是给出了两个方案:一个是去机房使用系统光盘恢复bin目录;一个是从相同系统中拷贝bin目录下的文件到当前目录。简单了解了下,如果删除后取消了远程连接,也没办法再登录了,就只能用第一个方法了。还好,我保留着连接没有断,另外有一个相同系统的正常的服务器的bin目录可供使用,所以决定用第二个方案。

然而,问题又来了,bin被删除后,基本上系统什么命令都没办法执行了,cp,scp等等所有能用的命令都不可用了。。。

正在陷入极度恐慌之时,搜索到一篇文章,给了我一个思路,文章地址:http://www.cnblogs.com/hark0623/p/5886091.html,就是将文件放到web服务器上,然后通过wget将文件拉倒当前服务器来。接下来将被删除bin目录的服务器称为A,同系统正常服务器称为B;

按照这个思路,我将B服务器上的bin目录copy了一份到B服务器的web目录,浏览器测试可以将文件下载下来,接下来考虑怎样在A服务器上获取文件。原本文章里面说的使用wget的功能,经测试发现命令不可用,就是说wget也是在bin目录里的命令。那就再换思路,除了bin目录里的命令,还有哪些是可以远程获取文件内容的。

由于A、B两台服务器用的都是php,我就考虑,能不能用php的函数实现从B服务器上复制文件到A服务器上来的可能性。

php执行脚本的路子已经很熟悉了,但是当前情况是,A服务器上已经没办法进行vi等类似的编辑操作,也没法进行git等版本控制器的操作了,那么php有没有类似的命令行操作呢?然后继续网上搜索信息,发现php是可以直接执行php脚本的,参考文章地址:http://www.linuxdiyf.com/linux/13076.html,文章里提供了一个方法:

/usr/local/php/bin/php -r 'phpinfo();'

经过测试,使用下面的命令:

/usr/local/php/bin/php -r '$content=file_get_contents("http://abc.def.com/testbin/ls");file_put_contents("ls",$content);'

顺利的将B服务器上的文件拷贝到了A服务器上来,测试是否可用

./ls

提示权限不足,跟这篇文章给的结果一样:http://www.cnblogs.com/hark0623/p/5886091.html,采用文章里的方法:perl -e “chmod 0777, ‘mkdir'”,perl命令依然不能用,那就继续php解决:

/usr/local/php/bin/php -r 'chmod("ls",0777);'

再次测试 ./ls 发现可用了,按照这个思路,重点拿到了cp和rz文件,通过cp将rz文件copy到 /bin 目录下,然后将剩下的文件全部通过rz上传到A服务器的/bin目录,chmod修改权限后,基本命令都恢复可用了,远程登录也OK了,至此问题解决

linux时间同步矫正

线上服务器,总是会发现时间与网络事件不同步的现象,现在教大家一个服务器自动同步时间的方法!

1,yum自动选择安装ntp,然后设置时区为北京,并更新服务器时间

// yum安装ntp

>yum -y install ntp

// 删除本地时间文件

>rm -f /etc/localtime

// 重新生成本地时间文件

>ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

// 去pool.ntp.org同步最新时间

>/usr/sbin/ntpdate -u pool.ntp.org

2,crontab 添加自动同步时间的任务

// 编辑linux自动任务

>crontab -e

## 设定每6小时同步一次

**/6 * * *  /usr/sbin/ntpdate-u pool.ntp.org >/dev/null2>&1

// 重启crond服务

>systemctl restart crond
“//”和“##” 均为注释符,后跟注释说明程序员开心一刻:
美国圣昆廷州立监狱安排囚犯学习编程,完成学习的犯人出狱后,没有一个人重新犯罪被抓回监狱。一位刚刚出狱的囚犯说:“太可怕了,我宁愿在外面饿死也不想再进去学编程了。”

删除语言栏中系统默认的微软拼音输入法

语言栏中如何删除系统默认的微软拼音输入法

 

问题:电脑下载并安装了搜狗输入法,并且把其他的输入法都删除完了,但是在语言栏还是有微软拼音输入法,而且可以正常使用。但是设置里面是没有微软拼音输入法的,只有搜狗和中文(简体)-美式键盘。有谁知道原因及解决的办法。

解决方案:解决最顽固的微软拼音输入法 方法:点击输入法右键图标-“设置”-“添加”-“微软拼音输入法”-“应用”。 对了 你会问我们不是删除它的吗?别急,接着往下看。然后点击刚添上的“微软拼音输入法”- “删除”-“确定”即可。这招相当简单而且很有效,再看看,只剩美式键盘和自己的输入法了吧~~

 

文章来自百度文库:http://wenku.baidu.com/view/a1919887b9d528ea81c779d8.html

vim ctrl+s 的问题

我在使用vim的时候,偶尔会碰到vim莫名其妙的僵在那里。在界面上输入什么都没有反应。甚至Ctrl+C、Ctrl+D也没有反应。

由于不是经常发生,也就没在意。每次很麻烦的关掉putty的窗口,重新再打开putty。今天发生了好几次,很是郁闷。就想看看究竟是怎么回事,结果发现每次按下Ctrl+S就会出现这个问题。

由于以前碰到过vim有些扩展有问题,这次就也怀疑是vim扩展的问题。结果删除了所有扩展和.vimrc文件,问题依旧。通过putty登录到别的系统,也是一样的问题。直接在ubuntu的命令行,按下Ctrl+S,问题也一样!

奥,原来是Linux的一个快捷键呀,干什么用的?

原来Ctrl+S在Linux里,是锁定屏幕的快捷键。如果要解锁,按下Ctrl+Q就可以了。

好吧,接受教训吧。以后碰到问题要勤快点,越早解决越少麻烦。
现在让我记牢点这两个组合键Ctrl+SCtrl+Q

转载自http://www.leonzhang.com/2010/06/09/vim_hangu_by_ctrl_s/

vim有字符的地方,背景颜色一样

vim全文颜色一样,原有的高亮功能没有了,看着很难看,可能是默认进入vim就搜索全文造成的

今天在用vim时出现一个很诡异的问题,整个文本内文字的背景变成了统一的黄色,没有高亮显示了,所有字符的背景全变成了一个颜色,多方查资料没有结果,差点就重新配置了vimrc,

后来在vim中搜索了一个字符串,结果原有的问题解决了,再一细看,发现被搜索的关键字的高亮背景和刚刚文本的背景颜色是一样的,退出后在vim进入,发现上一次搜索的关键字的高亮还在……

我的系统是centos的系统,vim是系统自带的,自己没有对其进行过配置,出现这种情况感觉是很诡异的,搜索了关键字后全文统一高亮的效果消失了,终于恢复正常了,但是想要重新找回搜索全文的状态就不知道怎么搞了,也不知道当时是怎么做到了,vim一打开就默认搜索全文内容,使全文高亮显示,还以为是不小心怎么改了配置了……

问题解决了,还是默认的看着舒服

 

新买的宏基电脑装不了系统

硬盘分区格式对装系统的影响

同学新买的的宏基e1570g的裸机本想装系统,怎么都装不上,分区时出现下面情况,让建立esp或msr分区,与过去的建立主分区和逻辑分区的方式不一样,如下:
55a7357adab44aed00e8805eb21c8701a08bfb21

查了半天资料才知道是由于硬盘默认分区格式为GPT造成的,要将原有的GPT转为MBR的格式(分区格式为GPT的硬盘必须转为分区格式为mbr硬盘才能安装低版本的windows,一般是win8和win7的区别)。下面是搜到的转换方法

在转换之前,首先让我们了解一下什么是GPT?为什么要转换?

GPT:GUID Partition Table (GUID 分区表 磁盘分区样式支持最大卷为 18 EB (exabytes) 并且每磁盘最多有 128 个分区)
我们可以到“磁盘管理”里面,右键点击下方的磁盘型号,看弹出的菜单,若有“转换为GPT磁盘”字样,说明你的硬盘分区是MBR模式;若有“转换为MBR磁盘”字样,说明你的硬盘分区是GPT模式。 不过:如果你安装的是Win7(无论32位还是64位),你的硬盘分区肯定是MBR模式。 如果你安装的是32位的Win8,你的硬盘分区仍然是MBR模式。 只有你安装的是64位的Win8,你的硬盘分区才可能是GPT模式。

1、用哪种模式的分区对系统运行没有影响。 2、如果主板支持UEFI,那么你可以在大于2T的磁盘上使用GPT模式创建分区安装64位操作系统。如果使用了MBR模式,大于2T那部份不可识别,只能浪费。 3、如果主板是传统BIOS,不支持UEFI,那么你只能在不大于2T的磁盘上使用MBR模式安装64位或32位系统。如果使用了2T以上磁盘,大于2T那部份不可识别,只能浪费。而且,无论磁盘是否大于2T,如果运行于GPT模式,那就不能安装任何操作系统。 4、WinXP不能识别GPT磁盘,无法读写GPT磁盘上的数据,但在远程共享时不受影响。

随机预装Win8的电脑,磁盘为GPT格式的,如果需要安装Win7等早期版本系统,需要转换为MBR格式的,使用Diskpart命令即可完成转换。 操作步骤:注意:转换磁盘格式需要清空磁盘中的所有分区和数据,在操作前,请保存好磁盘中所有重要数据。 1.使用Win7光盘或者U盘引导,进入系统安装界面。

2.按Shift + F10打开命令提示符。

3.输入”Diskpart”(不用输入引号,下同),并按回车,进入操作界面

4.输入:”list disk”,查看磁盘信息。注意看磁盘容量来选择。图中465G的Disk 0是硬盘,3852M的Disk 1是用于Win7安装的U盘。

5.输入:”select disk 0”,选择disk 0为当前操作的磁盘

6.输入:”Clean”,清空当前磁盘分区。

7.输入:”convert mbr”,转换为MBR分区。

8.操作完成,关闭此命令提示符窗口,继续按照正常的方法安装Win7系统即可。
扩展知识:convert命令的其它用法:
convert  basic     -将磁盘从动态转换为基本。
convert  dynamic  -将磁盘从基本转换为动态。
convert  gpt      -将磁盘从MBR转换为GPT。
convert  mbr     -将磁盘从GPT转换为MBR。

GPT 参考资料:http://baike.baidu.com/view/10817.htm
MBR 参考资料:http://baike.baidu.com/subview/9485/9079238.htm?fr=aladdin

文章来源:http://www.pc6.com/infoview/Article_61579.html

在mac os中可正常显示的中文名文件传到windows中后文件名变为乱码

mac os和windows中文件名的默认编码不同,在mac os中的中文文件名的默认编码格式为utf8,传到windows中文件名就会乱码,因为windows中默认的文件名编码格式为GBK,
windows中暂时没有以什么编码显示文件名的选项,也没有发现什么好的解决办法,不过网上的解决办法很多!
在次稍作记录,以后注意。