Written by 正冰 on 2014, April 24, 12:30 PM
Written by 正冰 on 2013, March 14, 8:30 PM
手头有一套php程序是zend加密的,将它放到主机空间上运行的时候遭遇如下问题:Fatal error: Incompatible file format: The encoded file has format major ID 3, whereas the Loader expects 4 in
百度总结之后,汇总该问题相关信息如下:
- 从PHP5.3开始如果要支持zendguard加密的PHP代码,必须安装zend guard loader,老的zend optimizer将不被支持。
- PHP5.2之前的Zend加密程序用Zend Optimizer解析。
- PHP5.3开始的Zend加密程序用Zend Guard Loader解析。
综上,造成该问题的原因是Zend Guard 5.1更新了加密PHP文件的算法来迎合PHP5.3新版本支持,用Zend Guard老版本加密过的PHP文件在 PHP5.3 + Zend Guard Loader的环境下都无法正常浏览,会报出文章开头的错误。
解决方法:
- 可以把PHP程序源文件在Zend Guard 5.1下重新加密,然后才能浏览。本处因为拿到的就是加密商业代码,故放弃这一招。
- 也可以把程序放到PHP5.2 + Zend Optimizer的环境下运行即可。本处选择它来运行这套加密程序。
我的主机提供商homezz.COM提供空间自动搬家功能,我把空间搬迁到了低版本PHP的环境下,搞定。摘录前后主机PHP环境如下:
- 搬迁前:PHP5.3.17 + Zend Engine v2.3.0 + Zend Guard Loader v3.3
- 搬迁后:PHP5.2.17 + Zend Engine v2.2.0 + Zend Optimizer v3.3.9
Filed under: 技术归总
1 Comments
62751 Views
Written by 正冰 on 2012, March 5, 12:10 PM
如果使用nginx服务器,默认情况下访问非php程序文件(比如html、jpg文件等),均会显示:404 Not Found。而访问不存在的PHP页面则会显示:No input file specified。解决前面一个问题比较简单,只要在对应网站的配置文件中加入语句指定404错误显示的页面,比如:error_page 404 http://blog.is36.com/404.html;。当然也可以指定别的页面,而因为PHP页面比较特殊,无论它是否存在,nginx都会先交给fastcgi处理,而fastcgi处理完成后直接显示No input file specified,没有将错误结果交回给nginx。那么解决这个问题就简单了,只需要让fastcgi将不存在的PHP程序文件交回给nginx即可。
找到nginx.conf文件,将语句fastcgi_intercept_errors on;加入到合适位置,reload一下nginx即可生效。
Filed under: 技术归总
0 Comments
15647 Views
Written by 正冰 on 2010, December 5, 4:32 PM
<?php
define('DIR_ROOT', str_replace('\\','/',dirname(__FILE__)));//获取当前文件物理路径
$tmp_file_path = DIR_ROOT.'/tmp/';//在根目录下增加tmp目录的路径
if(is_dir($tmp_file_path))
echo "tmp文件夹存在!";
else
{
mkdir($tmp_file_path, 0700);//如果不存在tmp目录,则建立
echo "tmp文件夹不存在,尝试建立成功!<br>";//未检测建立是否成功
echo "tmp目录为".$tmp_file_path;
}
?>
Filed under: 编程小记
0 Comments
20031 Views
Written by 正冰 on 2010, December 5, 4:30 PM
今天用APMServ5.2.6测试国内的最土团购程序,出现如下错误:
Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: files (path: ) in D:\APMServ5.2.6\www\htdocs\tuan\include\library\Session.class.php on line 15
出现该问题是session文件无法写入到临时目录,经过对比找到了原因,将下图中“PHP读写限制”设为空(不限制)即可。
或者在源代码Session.class.php文件中的session_start();语句前增加一句session_save_path(DIR_ROOT);指定session保存在网站根目录下(前提是之前配置虚拟主机时候指定了“PHP读写限制”在网站本目录)。
如果不是使用APMServ5.2.6如上问题所致,可以直接修改php.ini中的session.save_handler值从’user’到’files’,修改seession.path为当前网站有权限写入的路径。重启Apache即可。
Filed under: 编程小记
0 Comments
21756 Views