file_put_contents und IPS_SetScriptFile()

Hallo,

bin grad ein bisschen am verzweifeln, vielleicht kann mir jemand auf die Sprünge helfen?

Ich lege per Script ein Script-Objekt an.
Dann lege ich eine Scriptdatei an, mit file_put_contents( $file, $content).

Die Funktion IPS_SetScriptFile( $id, $file ) liefert mir immer eine Fehlermeldung, die Datei sei nicht da.

Ein Blick ins Verzeichnis im Explorer bestätigt das zunächst. Drücken auf „F5“ (Refresh) bringt die fragliche Datei zur Anzeige im Explorer.

IPS_Sleep(500) hat nix gebracht.

Win7, SSD … auf ner normalen HD geht’s aber auch nicht, gleiches Dilemma.

Hat jemand ne Idee? Danke im Voraus!

jwka

Vollständigkeitshalber den Code:


				$id = IPS_CreateScript( 0 );
				if( $id <> false )
				{
					$ok = IPS_SetName( $id, $f_ident . " autocreated " . $id );
					
					if( $ok )
					{
						$ok = IPS_SetParent( $id, intval( $parent_id ) );
						if( $ok )
						{
							$file_name = IPS_GetKernelDir() . "scripts" . DIRECTORY_SEPARATOR . $id . "_reserve_autocreate.php";
							echo $file_name . "
";
							$okfile = file_put_contents( $file_name, $file_content );
							IPS_sleep(500);
							$ok = $okfile;
							if( $ok )
							{
								$ok = IPS_SetScriptFile( $id, $file_name );
							};// write file ok
						};// set ParentID ok
					};// set name ok
					
					if( ! $ok )
					{
						IPS_DeleteScript( $id, false );
						if( $okfile )
						{
							//unlink( $file_name );
						
						};
						
					};

Ich zitiere die Doku. :rolleyes: :eek:
IPS_SetScriptFile: IP-Symcon :: Automatisierungssoftware

Dateiname des PHP Skripts (relativ zum “/scripts” Ordner)

paresy

aaaarg. Yep. Thanks!

Hatte ja gerade dazu einen Antrag gestellt … http://www.ip-symcon.de/forum/project.php?issueid=1243

Vielleicht wäre ein bisschen „Pimp my Fehlermeldung“ drin?

Das hätte mir vielleicht gehelft …

Warning: Datei C:\IPS\scripts\23197_reserve_autocreate.php existiert nicht in C:\IPS\scripts\z_ACVITI\99_ADMIN\IPS_ObjTree_CreateReservedElements_v0.01.php on line 335

Das „existiert nicht“ führt einem halt doch gewaltig auf ne falsche Fährte.

jwka

Jepp. Hab bei der Fehlermeldung jetzt den kompletten Pfad drin. Dann wird es sofort klar.

paresy

Ähm??

Sorry, verstehe ich nicht so ganz …

Der komplette Pfad (der Datei, die ich anhängen wollte) wurde ja in der Fehlermeldung angezeigt, was mich aber gerade auf die falsche Fährte gebracht hat.

Zeigst Du jetzt den Pfad mit zusätzlich „C:/IPS/scripts“ an, oder wie soll ich Deine Aussage verstehen?

Vielleicht wäre da ein Hinweis „bitte nur relative Pfade verwenden“ gut.

Allerdings würde das ja auch nicht ganz stimme, weil man ja nur relative „nach oben“ bis zum IPS-Hauptverzeichnis gehen kann (also nur maximal „…/“)

verwirrt.
jwka

Ja.

paresy