loader_test.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:6k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. //
  3. // ionCube Run Time Loading Compatibility Tester v2.3
  4. //
  5. // Last modified 2003-08-05
  6. //
  7. // Copyright (c) 2002-2003 ionCube Ltd.
  8. //
  9. //
  10. // Detect some system parameters
  11. //
  12. function ic_system_info()
  13. {
  14.   $thread_safe = false;
  15.   $debug_build = false;
  16.   $php_ini_path = '';
  17.   ob_start();
  18.   phpinfo(INFO_GENERAL);
  19.   $php_info = ob_get_contents();
  20.   ob_end_clean();
  21.   foreach (split("n",$php_info) as $line) {
  22.     if (eregi('command',$line)) {
  23.       continue;
  24.     }
  25.     if (eregi('thread safety.*(enabled|yes)',$line)) {
  26.       $thread_safe = true;
  27.     }
  28.     if (eregi('debug.*(enabled|yes)',$line)) {
  29.       $debug_build = true;
  30.     }
  31.     if (eregi("configuration file.*(</B></td><TD ALIGN="left">| => |v">)([^ <]*)(.*</td.*)?",$line,$match)) {
  32.       $php_ini_path = $match[2];
  33.       //
  34.       // If we can't access the php.ini file then we probably lost on the match
  35.       //
  36.       if (!@file_exists($php_ini_path)) {
  37. $php_ini_path = '';
  38.       }
  39.     }
  40.   }
  41.   return array('THREAD_SAFE' => $thread_safe,
  42.        'DEBUG_BUILD' => $debug_build,
  43.        'PHP_INI'     => $php_ini_path);
  44. }
  45. //
  46. // Text or HTML output?
  47. //
  48. $nl =  ((php_sapi_name() == 'cli') ? "n" : '<br>');
  49. $ok = true;
  50. $already_installed = false;
  51. //
  52. // Where are we?
  53. //
  54. $here = dirname(__FILE__);
  55. //
  56. // Is the loader already installed?
  57. //
  58. if (extension_loaded('ionCube Loader')) {
  59.   echo "An ionCube Loader is already installed and runtime loading is unnecessary.
  60. Encoded files should load without problems.$nl$nl";
  61.   $already_installed = true;
  62. }
  63. //
  64. // Test some system info
  65. //
  66. $sys_info = ic_system_info();
  67. if ($sys_info['THREAD_SAFE']) {
  68.   echo "Your PHP installation appears to have threading support, and PHP design
  69. limitations don't support runtime loading on threaded builds.$nl${nl}To use encoded files the Loader should be installed in the php.ini file.$nl";
  70.   $ok = false;
  71. }
  72. if ($sys_info['DEBUG_BUILD']) {
  73.   echo "Your PHP installation appears to be built with debugging support
  74. enabled, and is incompatible with ionCube Loaders.$nl${nl}Debugging support in PHP produces slower execution, is
  75. not recommended for production builds, and was probably a mistake.${nl}${nl}You should rebuild PHP without the --enable-debug option, and if
  76. you obtained your PHP install from an RPM then the producer of the
  77. RPM should be notified so that it can be corrected.$nl";
  78.   $ok = false;
  79. }
  80. //
  81. // Check safe mode and for a valid extensions directory
  82. //
  83. if (ini_get('safe_mode')) {
  84.   if (!$already_installed) {
  85.     echo "PHP safe mode is enabled and run time loading will not be possible.$nl";
  86.   }
  87.   $ok = false;
  88. } elseif (!is_dir(realpath(ini_get('extension_dir')))) {
  89.   if (!$already_installed) {
  90.     echo "The setting of extension_dir in the php.ini file is not a directory, and
  91. run time loading will not be possible. You do not need write permissions on the
  92. extension_dir, but for runtime loading to work, a path from the extensions
  93. directory to wherever the Loader is installed needs to exist and be valid.$nl";
  94.   }
  95.   $ok = false;
  96. }
  97. if ($ok) {
  98.   if ($already_installed) {
  99.     echo "Although a Loader is already installed, this script will still search
  100. for one, but only for information purposes. It will not try to install
  101. one again because it is unnecessary.$nl";
  102.   }
  103.   //
  104.   // Look for a Loader
  105.   //
  106.   $_ln_old='ioncube_loader.so';
  107.   $_ln_old_loc="/ioncube/$_ln_old";
  108.   $_u = php_uname();
  109.   $_os = substr($_u,0,strpos($_u,' '));
  110.   $_php_version = phpversion();
  111.   $_php_family = substr($_php_version,0,3);
  112.   $_ln_new='ioncube_loader_'.strtolower(substr($_u,0,3)).'_'.$_php_family.'.so';
  113.   $_ln_new_loc="/ioncube/$_ln_new";
  114.   echo "${nl}Looking for Loader '$_ln_new' or '$_ln_old'${nl}${nl}";
  115.   $_rd=str_repeat('/..',substr_count($_id=realpath(ini_get('extension_dir')),'/')).dirname(__FILE__).'/';
  116.   echo "Extensions Dir: $_id$nl";
  117.   echo "Relative Path:  $_rd$nl";
  118.   $_ln = '';
  119.   $_i=strlen($_rd);
  120.   while($_i--) {
  121.     if($_rd[$_i]=='/') {
  122.       // Try the old style Loader name
  123.       $_lp=substr($_rd,0,$_i).$_ln_old_loc;
  124.       $_fqlp=$_id.$_lp;
  125.       if(file_exists($_fqlp)) {
  126. echo "Found Loader:   $_fqlp$nl";
  127. $_ln=$_lp;
  128. break;
  129.       }
  130.       // Try the new style Loader name
  131.       $_lp=substr($_rd,0,$_i).$_ln_new_loc;
  132.       $_fqlp=$_id.$_lp;
  133.       if(file_exists($_fqlp)) {
  134. echo "Found Loader:   $_fqlp$nl";
  135. $_ln=$_lp;
  136. break;
  137.       }
  138.     }
  139.   }
  140.   //
  141.   // If Loader not found, try the fallback of in the extensions directory
  142.   //
  143.   if (!$_ln) {
  144.     if (file_exists($_id.$_ln_old_loc)) {
  145.       $_ln = $_ln_old_loc;
  146.     }
  147.     if (file_exists($_id.$_ln_new_loc)) {
  148.       $_ln = $_ln_new_loc;
  149.     }
  150.     if ($_ln) {
  151.       echo "Found Loader $_ln in extensions directory.$nl";
  152.     }
  153.   }
  154.   echo $nl;
  155.   if ($_ln) {
  156.     if (!$already_installed) {
  157.       echo "Trying to install Loader - this may produce an error...$nl";
  158.       dl($_ln);
  159.       if(extension_loaded('ionCube Loader')) {
  160. echo "The Loader was successfully installed, and encoded files should be able to
  161. automatically install the Loader when needed. No changes to your php.ini file
  162. should be required to use encoded files on this system.${nl}";
  163.       } else {
  164. echo "The Loader was not installed.$nl";
  165.       } 
  166.     } else {
  167.       echo "The required Loader was found, but installation is not being tried 
  168. because a working Loader is already installed.$nl";
  169.     }
  170.   } else {
  171.     if (!$already_installed) {
  172.       echo "Runtime loading should be possible on your system, but no suitable Loader
  173. was found at this time.$nl$nl";
  174.       echo "The $_os Loader for PHP $_php_family releases, including support for PHP $_php_version,
  175. is required.$nl";
  176.     } else {
  177.       echo "Runtime loading should be possible on your system, but no suitable Loader
  178. was found at this time. However, as the Loader appears to be installed already
  179. this does not matter, and Encoded files should run without problems.$nl";
  180.     }
  181.   }
  182. }
  183. $email = '';
  184. if (php_sapi_name() != 'cli') {
  185.   $email = "<a href="mailto:$email">$email</a>";
  186. }
  187. echo "${nl}Please send the output of this script to $email if you
  188. have questions or require assistance.$nl$nl";
  189. ?>