Probleem met filenaam van met PHP hernoemde file
ik rename met PHP een bepaald bestand (op mijn NAS). Dus bijv : ;
Op de server gaat dat prima, ik zie de hernoemde file met de juiste hernoemde naam.
Als ik die file nu met de Windows-verkenner bekijk, ziet de filenaam er heel anders uit!
Heeft iemand een idee hoe dat komt en wat ik eraan kan doen?
Bvd en mvg
Oftewel, wat verwacht je en wat zie je?
rename() is een vrij straight-forward functie (ook qua implementatie "onder de motorkap") dus het probleem kán bijna nergens anders zitten dan in de daadwerkelijke filenames.
Dat is een snelle reactie!
ik rename (met PHP) bijv. een pdf-file naar een andere naam:
bijv.
Op de NAS ziet het er prima uit. Maar als ik vanaf mijn pc diezelfde hernoemde file met de Windows-verkenner bekijk (openen kan gewoon) dan is de filenaam abacadabra....
Omdat dit in een loop met een groot aantal bestanden gebeurt, herken je de files niet meer vanwege de vreemde namen.
Enig idee?
mvg
En inderdaad, welk resultaat krijg je te zien?
Copy-paste of plaats een screenshot, een letterlijk voorbeeld kunnen we veel meer mee dan iets vaags als "abracadabra"
En zijn die verdubbeld naar 2 rare tekens per letter?
Ja die 'abacadabra' is inderdaad ter vervanging van een wildvreemde filenaam.
En ja, in het eerste voorbeeld staat een dubbele quote verkeerd.
Een echt voorbeeld is (onderdeel uit de webapplicatie):
Bekijken van de hernoemde filenaam op de NAS ziet er goed uit.
Maar met de Windows-verkenner bekeken (vanaf de pc) zie ik bijv als resultaat: "T9MCGF~W.PDF"
Enig idee?
Doe je nog iets vreemds met tekencoderingen of iets dergelijks?
Als ik dat zo zie lijkt mij dat het ergens in het genetwerkte bestandssysteem niet goed gaat tussen tekencoderingen.
Nee, ik doe niks met tekencodering of zo.
Ik heb een Excel-tabel met twee kolommen: in de ene kolom staat de huidige filenaam en achter een puntkomma staat de nieuwe naam. De php-rename werkt prima, als ik het op de server bekijk (met Filestation, een soort verkenner op de server). Maar bekeken vanuit mijn pc, met de Windows-verkenner dus, zie ik een rare naam (zie eerder).
De file is nu niet meer herkenbaar.
Geen idee hoe dit komt. Ik zoek natuurlijk verder, maar misschien klinkt het bekend?
Bvd en mvg
Bij alle rename-acties, of bij een of enkele files?
Lijkt jouw situatie toevallig op degene die in deze Reddit-post beschreven staat? Want als dat het geval is ligt het probleem bij de koppeling tussen je Windows machine en je Synology NAS.
Edit: Misschien biedt deze StackOverflow post een oplossing
Gewijzigd op 08/04/2021 14:55:15 door Thom nvt
Andre Janssen op 08/04/2021 14:48:42:
Nee, ik doe niks met tekencodering of zo.
Dat doe je wel, ook al heb je het niet in de gaten.
Zowel het PHP script werkt vanuit een bepaalde codering, en het bestandssysteem heeft een codering. PHP werkt standaard met Unicode UTF-8 sinds PHP versie 5.6, en het bestandssysteem.. eh... ja dat hangt er van af welk bestandssysteem je gebruikt.
In principe is de codering van PHP en het bestandssysteem bekend bij de aanroep van rename(), dus zou het geen probleem moeten geven. Te meer omdat vanuit de NAS alles er goed uitziet.
Eerst maar eens kijken naar de suggesties van Thom, misschien dat daar de oplossing tussen zit.
That won't work :-)
Zoiets bedoelt Ivo:
ik heb nog niet al jullie suggesties gelezen maar jullie voorbeelden werken allemaal!
Ook 8+3 of 11+3 enz
even een bestandje maken en renamen werkt goed.
wat niet werkt zijn de originele bestanden die ik met php rename:
die zien er op de NAS na rename goed uit maar bekeken met de Windows-verkenner niet; er zit dan steeds een tilde en een hoofdletter als laatste in de verkeerde hernoemde naam gevolgd door de juiste extensie.
Dus bijv. 12345678_90.pdf wordt bijv TR4198~X.pdf
De hernoemde naam bevat weliswaar 8 karakters maar is onherkenbaar geworden.
Ik zie er nog geen enkele logica in en ga er eens een nachtje over slapen.......
Iemand nog een idee??
https://en.wikipedia.org/wiki/8.3_filename
Ik denk toch nog steeds dat het zit in de koppeling naar de NAS, Synology apparaten i.c.m. Windows hebben vaker ruzie met het SMB protocol.
Link dan even naar de échte Wikipedia i.p.v. zo'n met spam- en trackingcookies overladen ripoff: Ik denk toch nog steeds dat het zit in de koppeling naar de NAS, Synology apparaten i.c.m. Windows hebben vaker ruzie met het SMB protocol.
Andre Janssen op 08/04/2021 22:26:25:
Iemand nog een idee??
Wat je eigenlijk zegt is dat je met de Windows Verkenner bestandsnamen op de NAS (is het Synology?) ziet in DOS 8.3-formaat, dat is een subformaat van de lange bestandsnamen die zijn geïntroduceerd met Windows 95. Één van de twee systemen schakelt daar naar over.
Zie je in de terminal op de NAS wel de nieuwe namen goed? Dan ligt het niet aan PHP.
Je kunt SSH-toegang aanzetten in DSM onder Configuratiescherm -> Terminal en SNMP -> SSH Service inschakleen. Daarna log je in op de NAS (via Putty o.i.d.) met "admin" en het wachtwoord, eventueel daarna "sudo su" met wachtwoord en je kijkt in de map "ls -l /mapnaam | more" om te zien of het allemaal klopt.
Klopt het op de NAS, maar laat de Windows Verkenner nog steeds troep zien? Controleer je instellingen dubbel: met welk protocol en versie wordt er verbinding gemaakt met de NAS?
Je kunt dit controleren onder Configuratiescherm -> Bestandsservices. Onder SMB/AFS/NFS kan je Samba, niet AFS want Apple, of NFS instellen. Met de knop Geavanceerd kan je ook de versie van het protocol beheren (Samba versie 1 wordt niet meer door Windows ondersteund).
Als het via het ene protocol niet werkt, kijk dan of het wel werkt met een ander protocol. In het ergste geval kan je via FTP/FTPS kijken, dat klopt altijd, tenzij je in de verkeerde map op de NAS zit.
Overigens zijn er ook andere manieren om op de NAS te browsen vanuit Windows. Vanuit je browser, via DSM ga je naar Start -> File Station om met je bestanden op Windows te werken.