ZEND / php-version

Sebigf

Erfahrenes Mitglied
Hallo zusammen,

ich nutze schon länger ZEND Dev.

Mich hat vor einigen Tagen ein Freund gefragt, welche Mindesvorraussetzung mein Script hat. Ich habe etliche PHP-Versionen verbaut.

Kann ich irgendwie mit ZEND ermitteln, was die mind. PHP-Version meiner Scriptes ist, anhand der verbauten Funktionen ?

Danke
 
Zend ist ein Unternehmen, das unter anderem die Zend Engine entwickelt. Was genau meinst du nun mit Zend beziehungsweise „Zend Dev.“?
 
:)

Sorry wegen der kurzen Bezeichnung....

Zend Development Enviroment

Das Tool meinte ich natürlich damit.
Ich denke es müsste doch einen Weg geben, alle genutzten Funktionen zu analysieren und somit auch sagen zu können, was die "älteste" Funktion ist.

Ich hoffe ich habs verständlich beschrieben, was ich meine...

Danke
 
Ich meine ZEND Studio.
Version 5.0.0

Habe da die Demo von. Finde es aber sehr gut. Vor allem, wenn es das mit der PHP Version drauf hat :D
 
Hmm, ich kenne Zend Studio nicht, aber mir ist zur Zeit kein Programm bekannt welches die von Dir gewuenschte Funktion bietet. Was natuerlich nicht heissen muss, dass es kein solches Programm gibt.
Im Grunde genommen kann man sowas auch per Script machen. Du schreibst also ein Script das Scripts checkt. Hmm, wenn ich so darueber nachdenke hoert sich das nach einer guten Idee an. Vielleicht probier ich da mal was dran rum... :)

Nachtrag: So, ich hab da grad mal was geschraubt. Wohl noch nicht perfekt, aber schon ganz nett.
Voraussetzungen:
  • Oeffnenden Klammern muessen direkt nach dem Funktionsnamen stehen, Leerzeichen sind dort nicht erlaubt.
  • Die PHP-Dokumentation muss heruntergeladen werden und fuer PHP erreichbar sein. Der Pfad ist in der Konstante PHPMANUAL definiert.
Die zu pruefende Datei einfach ueber das eingebaute Formular hochladen und schon bekommt man die gewuenschte Info.
Laut eigener Aussage benoetigt das Script PHP 4. :)
Die Versionsausgabe ist natuerlich nicht auf die Hauptversionsnummer beschraenkt, es haengt halt davon ab was in der Doku steht.
Hier mal ein etwas genaueres Beispiel:
versioncheck.php hat gesagt.:
uncompress.php requires PHP 4.3.3
OOP wird noch nicht beruecksichtigt, aber das kommt noch.
Includete Dateien werden nicht beruecksichtigt, und ich hab zur Zeit nicht vor das zu aendern.

versioncheck.php
PHP:
<html>
<body>
<?php
error_reporting(E_ALL);
define('PHPMANUAL','./phpmanual');
if ((isset($_POST['checkversion'])) && ($_FILES['scriptfile']['size']>0))
	{
		$file=fopen($_FILES['scriptfile']['tmp_name'],'r');
		$script=fread($file,filesize($_FILES['scriptfile']['tmp_name']));
		fclose($file);
		preg_match_all('/([\w]|[_])*[(]/',$script,$matches);
		$results=array();
		for ($x=0;$x<count($matches[0]);$x++)
			{
				if	(($matches[0][$x]!='(') && (!in_array(str_replace('(','',$matches[0][$x]),$results)))
					{
						$results[]=str_replace('(','',$matches[0][$x]);
					}
			}
		$minversion=0;
		for ($x=0;$x<count($results);$x++)
			{
				if (file_exists(PHPMANUAL.'/function.'.str_replace('_','-',$results[$x]).'.html'))
					{
						$file=fopen(PHPMANUAL.'/function.'.str_replace('_','-',$results[$x]).'.html','r');
						$info=fread($file,filesize(PHPMANUAL.'/function.'.str_replace('_','-',$results[$x]).'.html'));
						fclose($file);
						preg_match('|\(PHP.*\)</P|',$info,$matches);
						if (!empty($matches))
							{
								$versions=explode(',',str_replace(' ','',str_replace('(','',str_replace(')</P','',$matches[0]))));
								$requiredversion=$versions[0];
								if (strpos($requiredversion,'='))
									{
										$requiredversion=substr($requiredversion,strpos($requiredversion,'=')+1);
									}
								else
									{
										$requiredversion=substr($requiredversion,3);
									}
								if ($requiredversion>$minversion)
									{
										$minversion=$requiredversion;
									}
							}
					}
			}
		echo $_FILES['scriptfile']['name'].' requires PHP '.$minversion.'<hr>';
	}
?>
<form method="post" action="versioncheck.php" enctype="multipart/form-data">
<input type="file" name="scriptfile">
<br>
<input type="submit" name="checkversion" value="Check version">
</form>
</body>
</html>

Nachtrag 2: Nachdem ich nun mal selbst ein paar Scripts mit diesem Script analysiert hab scheint es mir so als wuerden die meisten Scripts problemlos mit PHP3 funktionieren. Zum Beispiel ist im hier geposteten Script allein die Funktion in_array() dafuer verantwortlich, dass PHP4 benoetigt wird. :)
An der Ueberpruefung von Klassen arbeite ich grad, grundsaetzlich wird nun schon erkannt ob eine Klasse vorhanden ist und anhand der Schluesselworte private, public und protected kann auch schon bestimmt werden, dass PHP5 noetig ist. Ich werd mal ein wenig rumlesen was bei Klassen noch wichtig ist und dies noch einbauen. Auf jeden Fall macht das Script gut Fortschritte. Allgemein ist das alles irgendwie auch einfacher als ich mir vorgestellt hatte.
Evtl. werd ich auch noch wegen Besonderheiten schauen, da ja zum Teil Funtionen neue Features bieten wenn man eine hoehere PHP-Version einsetzt. So gibt es z.B. md5() schon in PHP3, jedoch wurde mit PHP5 ein 2. Parameter eingefuehrt. Nur hab ich da noch keinen Ansatz wie ich da vorgehen soll.

Nachtrag 3: Ich hab das "fertige" Script jetzt als Codeschnipsel gepostet. Versionspruefung fuer PHP-Scripts
 
Zurück