Archief - PhP : Windows >< Mac

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

MagicGerre

Legacy Member
Ik ben alles aan het overzetten van Windows server naar een XServ van Mac.
Er zitten hier ook delen php pagains bij, en ik dacht, dit is 5mins werk -> niet dus

Op Windows 2003 server werkte alles perfect. Op Mac XServ heb ik volgend probleem bij php paginas.

Zal proberen het probleem zo goed mogelijk te schetsen

Er is een formulier waarbij je naam etc moet ingeven. Op dit formulier staat ook een knop om een bestand te zoeken dat je wilt uploaden. Dit bestand wordt _NIET_ via php geupload (niet haalbaar, ga hier niet te ver over uitwijken, had gewoon te veel nadelen). Dit bestand wordt via een Applet verstuurd over ftp. Nu, in het veld waar je kon zoeken (browse) staat als je dit op windows doet het volledige path, doe je dit op mac, staat er enkel de bestandsnaam. Voor ftp heb je beide nodig (moet weten waar het op de schijf staat). Dit alles werd goed doorgegeven op Windows architectuur.
Nu alle paginas op XServ staan heb ik volgend probleem (enkel met een windows pc, iets uploaden van een mac gaat nog steeds)
bv het pad is: c:\a\b\c.xyz
Hij maakt hiervan: c:\\a\\b\\c.xyz
Ik gebruikte basename en basedir, maar dit loopt natuurlijk met \\ in het 100.
Heb al de \\ vervangen door \, maar dan nog krijg ik deze fout.
Code:
$_POST["unix"] = ereg_replace('\\\\\\\\','\\',$_POST["unix"]);
basename($_POST["unix"])
dirname($_POST["unix"])

Als ik een echo doe, staat het er met 1 \, maar daarna gebruikt hij gewoon de 2\\ verder.

Iemand die een oplossing heeft voor dit ?

Config voor
Windows 2003 Server
PhP 4.3.10

Config na
Mac OS X 10.4 Tiger
PhP 4.3.11

edit
hier echo outprints

OP MAC XServ
c:\doc\set\bestand.avi
BASENAME = c:\doc\set\bestand.avi
DIRNAME = .

Op Windows (hoe het vroeger was & hoe het nu hoort te zijn)
c:\doc\set\bestand.avi
BASENAME = bestand.avi
DIRNAME = c:\doc\set

dJeez

Legacy Member
Ja hallo, je bent hier blijkbaar wel 2 dingen door elkaar aan het gooien. De dirname functie van PHP gaat aan de hand van het HUIDIGE OS bepalen wat de foldernamen zijn. Als je aan een Unix systeem een Windows pad doorgeeft zal die dat uiteraard niet herkennen aangezien Unix met slashes werkt (vb. /tmp/xxxx/yyy/zzz.txt). Het probleem ligt hem dus al zeker in de applet en de verwerking ervan naar je PHP script toe. Werkt die applet via FTP? Zo ja, stuur dan het bestand door naar de server (zoals je momenteel wellicht al doet) en geef daarna de bestandsnaam en foldernaam op de server door naar het PHP script. Dan zal alles wel werken zoals 't moet.

MagicGerre

Legacy Member
thnx voor uitleg
maar,

het zit zo
1 php pagina met een form waar (oa) een veldje instaat om een bestand te kiezen op de schijf (wat dan uiteindelijk doorgestuurd moet worden)
op de volgende pagina, wordt het applet geladen wordt en alle vars worden doorgegeven. In het applet zit een ftp client verwerkt die de file op de schijf zal doorsturen naar (een andere dan de web) server. Voor ftp heb je het path + bestandsnaam nodig van de client die naar de pagina surft. Er zit dus niets fout in het applet, aangezien dit enkel maar over ftp zaken doorstuurt en daarna enkele dingen wegschrijft in de db.
Het applet krijgt gewoon de foute dingen door omdat die basename en dirname niet werken zoals op een windows omgeving.
Het probleem ligt hem dus al zeker in de applet en de verwerking ervan naar je PHP script toe.
het is dus andersom, php stuurt door naar applet (dir+bestand), applet stuurt dan de lokale file door

MagicGerre

Legacy Member
Het is opgelost nu. Werkt nu met dezelfde code op beide systemen

Heb het pad laten omvormen tot unfirm unix formaat en dan werkt alles terug perfect.

Mag geclosed worden maw.

dJeez

Legacy Member
Err, in dat geval kon je imho beter het volledige pad (incl. bestandsnaam dus) doorgeven naar de applet toe en in de applet het pad gaan opsplitsen maar soit, als 't nu al werkt is 't ook goed zeker :p.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan