浏览模式: 标准 | 列表 Tag: php

GoAgent+PHP空间=走出内网

这篇日志被加密了,请输入密码后查看。

解决Zend加密的PHP页面出现Incompatible file format...

手头有一套php程序是zend加密的,将它放到主机空间上运行的时候遭遇如下问题:Fatal error: Incompatible file format: The encoded file has format major ID 3, whereas the Loader expects 4 in

百度总结之后,汇总该问题相关信息如下:

  1. 从PHP5.3开始如果要支持zendguard加密的PHP代码,必须安装zend guard loader,老的zend optimizer将不被支持。
  2. PHP5.2之前的Zend加密程序用Zend Optimizer解析。
  3. 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

Tags: zend, php, zendguard, zend guard loader, zend optimizer, homezz

解决nginx服务器访问不存在的php页面显示No input file spe...

如果使用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即可生效。

Tags: nginx, php

写一段简单的PHP建立文件夹代码

 <?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;
}
?>

Tags: php, mkdir

解决Fatal error: session_start()

今天用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读写限制”设为空(不限制)即可。

fatal_error_session_start.jpg

大小: 103.15 K
尺寸: 300 x 188
浏览: 271 次
点击打开新窗口浏览全图

或者在源代码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即可。

Tags: php, session_start