Du bist nicht angemeldet.

  1. Übersicht
  2. » Allgemein
  3. » Php - Unsupported Operand Types
  4. » Eine Antwort schreiben

Eine Antwort schreiben

Schreibe deinen Beitrag und versende ihn
Beitragsoptionen
Bist Du ein Mensch oder ein Roboter ?

Verifizierung, dass diese Aktion durch eine reale Person vorgenommen wird und nicht von einem Programm.

Zurück

Themen-Übersicht (Neuester Beitrag zuerst)

Mr. Anderson
29.11.2005 01:53

aja happy
also voll danaben getippt.
Naja, ich hätte grad zwei andere Ideen:

Variante 1: die Tilde mit Klammern noch vom umask() abtrennen.

also aus dem

if (!isset($dirpermission)) {
$dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;
}
if (!isset($filepermission)) {
$filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644;
}

mach dies:

if (!isset($dirpermission)) {
$dirpermission = (function_exists('umask')) ? (0777 & (~(umask()))) : 0755;
}
if (!isset($filepermission)) {
$filepermission = (function_exists('umask')) ? (0666 & (~(umask()))) : 0644;
}


Variante 2: Vielleicht kennt der Interpreter die Tilde als unären Operator für den Rückgabewert von umask() nicht.
Füge irgendwo ziemlich weit am Anfang des Skripts diese neue Funktion ein:

function negation($num) {

        $world = $num % 8;
        $num = floor ($num / 8);
        $group = $num % 8;
        $num = floor ($num / 8);
        $owner = $num;

        $res = $owner * 64 + $group * 8 + $world;
        return $res;

}

und mach wieder aus dem hier

if (!isset($dirpermission)) {
$dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;
}
if (!isset($filepermission)) {
$filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644;
}

nun das da:

if (!isset($dirpermission)) {
$dirpermission = (function_exists('umask')) ? (0777 & negation(umask())) : 0755;
}
if (!isset($filepermission)) {
$filepermission = (function_exists('umask')) ? (0666 & negation(umask())) : 0644;
}
solitaire
28.11.2005 14:04

Funktioniert leider auch nicht.
Da kommt dann wieder der selbe Fehler
wie im Ausgangsposting.

Mr. Anderson
26.11.2005 04:52
Ronny,23.11.2005 10:07 schrieb:

ups nicht dran gedacht, aber ~umask hat mir vorher eh noch nix gesagt.


Dann sei doch so nett und bastel dem soli das script um (anscheinend sollte man dann die maske vorher auslesen und entsprechend "umbasteln", damit die Rechtevergabe wie gewuenscht verdreht wird).

bye Ron

Äh. Ja. Ich hab nicht wirklich Ahnung von php...

So als Schuss ins Blaue würde ich tippen, dass der Interpreter etwas buggy ist.
Ich vermute, er versucht 0777 & ~ auzuwerten anstatt erst ~umask(). Die Präzedenz wäre also anders. (php ist da wohl auch nicht so genau dokumentiert)
Es wäre daher m. E. einen Versuch wert, einfach das ~umask() in Klammern zu setzen.

Das heißt, aus

if (!isset($dirpermission)) {
$dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;
}
if (!isset($filepermission)) {
$filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644;
}

wird

if (!isset($dirpermission)) {
$dirpermission = (function_exists('umask')) ? (0777 & (~umask())) : 0755;
}
if (!isset($filepermission)) {
$filepermission = (function_exists('umask')) ? (0666 & (~umask())) : 0644;
}
solitaire
24.11.2005 18:38

Ich glaube das funktioniert sowieso nicht.
Die lassen es einfach nicht zu das man Ordner erstellt.
Ich konnte noch nicht mal eine bestehende Ordnerstrukur
mit unzip.php entpacken.
War alles sofort weg.

Aber ist alles nicht so sehr wichtig.
Ich hab ausreichend Webspace.
Mir ging es nur darum das zur Funktion zu bringen,
und hab ja immerhin schon etwas dabei gelernt.
biggrin

Ronny
23.11.2005 11:07

ups nicht dran gedacht, aber ~umask hat mir vorher eh noch nix gesagt.


Dann sei doch so nett und bastel dem soli das script um (anscheinend sollte man dann die maske vorher auslesen und entsprechend "umbasteln", damit die Rechtevergabe wie gewuenscht verdreht wird).

bye Ron

Mr. Anderson
22.11.2005 21:55

*räusper*
ich kenne das Skript zwar nicht, aber wenn man aus einem

0777 & ~umask()

ein

0777 & umask()

macht und das als Rechte setzt, dreht man die Rechte genau rum. Wenn umask als Standardmaske  0022 zurückgibt,  so wird daraus ~0022 = ?755 und 0777 & ?755 = 0022 - Du darfst nichts, deine Gruppe und der Rest der Welt bekommen Schreibrechte.

solitaire
22.11.2005 08:07

Danke, webadmin funktioniert jetzt.
Nur schade das man keine Ordner erstellen oder umbenennen kann.
sad

Proxys hatte ich auch schon ausprobiert,
wurden aber alle abgelehnt.
Kenn wohl keine gescheiten.
sad

Ronny
20.11.2005 11:23

entferne mal bei den beiden ~umask() die tilde

aus:

if (!isset($dirpermission)) {
	$dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;
}
if (!isset($filepermission)) {
	$filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644;
}

wird

if (!isset($dirpermission)) {
	$dirpermission = (function_exists('umask')) ? (0777 & umask()) : 0755;
}
if (!isset($filepermission)) {
	$filepermission = (function_exists('umask')) ? (0666 & umask()) : 0644;
}

dann funzt es auch auf free.fr ;D


ps: noe hab schon laenger nix bei free.fr registriert - notfalls muss man halt risikoreich ueber franzoesische proxys gehen ;D


bye Ron

solitaire
19.11.2005 09:01

Hier mal ein kleiner Ausschnitt:

$words = getwords($lang);

if ($site_charset == 'auto') {
    $site_charset = $word_charset;
}

$cols = ($win) ? 4 : 7;

if (!isset($dirpermission)) {
    $dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;
}
if (!isset($filepermission)) {
    $filepermission = (function_exists('umask')) ? (0666 & ~umask()) : 0644;
}

if (!empty($_SERVER['SCRIPT_NAME'])) {
    $self = html(basename($_SERVER['SCRIPT_NAME']));
} elseif (!empty($_SERVER['PHP_SELF'])) {
    $self = html(basename($_SERVER['PHP_SELF']));
} else {
    $self = '';
}

Das gesamt Script findest du hier:

-->Linktitel:
-->Linktitel: http://wacker-welt.de/webadmin/ (Links sind aus rechtlichen Gründen nicht klickbar)
-->Link: 'http://wacker-welt.de/webadmin/'
(Links sind aus rechtlichen Gründen nicht klickbar)
-->Link: 'http://wacker-welt.de/webadmin/'


Aber Achtung falls das jemand testen will.
Die ganze Sache funktioniert ohne LogIn.
Wer es auf seinem Webspace vergisst,
gibt Hin und Kunz Zutritt zu seinen Dateien.


Hast du übrigens in letzter Zeit mal einen Account auf free.fr registriert?
Bei den neuen funktioniert der ftp nur noch von Frankreich aus.

Ronny
18.11.2005 23:54

kannste zusaetzlich auch mal die vorherige zeile posten ?


zwecks chmod ... probiers doch einfach mal per Einfachst-Script, per Chmod nen Dateiattribut zu aendern.

Denke mal aber, das umask macht probs, dazu wirste bei free.fr nich die Rechte haben (das aendert die allgemeinen Attribute von Dateien die durch diesen Prozess (also das Script in dem Fall) erstellt werden).


bye Ron

solitaire
18.11.2005 21:09

Es geht um webadmin.php, das ist ein kleiner Filemanager.

Auf localhost läuft er bei mir ohne Probleme.
Auf free.fr bekomme ich allerdings folgenden Fehler
Unsupported operand types on line 256

Die Zeile sieht so aus.
    $dirpermission = (function_exists('umask')) ? (0777 & ~umask()) : 0755;

Ich tippe mal der Fehler ist das "~" weil das vorher im Code nicht auftaucht.
Was bedeutet dieses und warum könnte das mokiert werden?
Oder kommt der Fehler vielleicht doch an fehlenden chmod Rechten?

bin etwas ratlos,
soli