Re: Parsing mbox files with Windows Php [message #181735 is a reply to message #181731] |
Tue, 28 May 2013 16:23 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma:
|
Senior Member |
|
|
On 5/27/2013 11:15 PM, Chuck Anderson wrote:
> Peter H. Coffin wrote:
>> On Sat, 25 May 2013 16:39:14 -0600, Chuck Anderson wrote:
>>> Peter H. Coffin wrote:
>>>> On Fri, 24 May 2013 15:57:14 -0600, Chuck Anderson wrote:
>>>> > $mbox = imap_open('pathto/mboxfile', '', '') // works on *nix, but
>>>> > not on Windows.
>>>> > - Notice: Unknown: Can't open mailbox mboxfiles/Inbox: no such
>>>> > mailbox (errflg=2) in Unknown on line 0.
>>>> > (This second error is the one coming from the underlying
>>>> > c-client function.)
>>>> Okay, step one: quit munging stuff around and give us the EXACT code,
>>>> the EXACT contents of variables involved, and the EXACT error messages.
>>>> You're not revealing national secrets by posting paths to filenames,
>>>> and
>>>> what the problem is may be in what you're changing to be more general.
>>> I used generic paths and filenames because I had tried several
>>> variations.
>>>
>>> I have learned that imap_open only works on a file - on a *nix web
>>> server - if the path to the mbox file is relative to $HOME. I have
>>> not found any official documentation, just forum posts saying so, and
>>> ... it is the only way I have been able to make it work.
>>>
>>> So, imap_open works for me (on the remote Linux host) if, and only
>>> if, I use:
>>> imap_open ('public_html/mboxfiles/Trash', '', '')
>>> // Trash is an mbox file I uploaded directly from my Thunderbird Profile
>>>
>>> On Windows
>>> c:/localhost is the document root
>>> c:/localhost/imap is where the Php scripts are located.
>>> c:/localhost/imap/mboxfiles is where the mbox file "Trash" is located
>>>
>>> I have tried:
>>> imap_open('localhost/imap/mboxfiles/Trash', '', ''); // equivalent of
>>> being relative to $HOME on *nix
>>> imap_open('/imap/mboxfiles/Trash', '', ''); // absolute path from
>>> document root
>>> imap_open('mboxfiles/Trash', '', ''); // relative path
>>> imap_open('c:/localhost/imap/mboxfiles/Trash', '', ''); // real path
>>> on disk
>>>
>>> On Windows I always get these two errors (the file path changes
>>> accordingly):
>>>
>>> - Warning: imap_open(): Couldn't open stream
>>> localhost/utilities/imap/eml/Trash in
>>> localhost\utilities\imap\imap_save_mbox_file.php on line 127
>>>
>>> - Notice: Unknown: Can't open mailbox
>>> localhost/utilities/imap/eml/Trash: no such mailbox (errflg=2) in
>>> Unknown on line 0
>>>
>>> I have read that the second error is coming from the c-client
>>> (errflg=2 comes from there).
>>
>> Since the error messages about whether the file can be found, maybe it's
>> time to investigate WHERE exactly cclient is thinking it's pointing.
>> Because DocumentRoot isn't necessarily the same as $HOME.
>
> I was thinking it "could" be c:/ (the root of the drive that localhost
> is on), but I also don't see a real equivalence.
>
>> And when you're using an actual IMAP server, they're nowhere close to
>> alike.
>> But %UserProfile% might be a lot closer.
>
> That would be C:/Users/Username
>
> Hey! It found it there:
>
> When I moved the mbox file 'Trash' to 'C:/Users/Username' and used:
> imap_open('Trash', '', ''); // Trash is in %UserProfile%
>
> The low level error changed to:
>
> Notice: Unknown: Trash (file C:\Users\Owner\Trash) is not in valid
> mailbox format (errflg=2) in Unknown on line 0
>
> If I upload that very file to my linux host, imap_open works.
>
> I'll try tinkering with line endings .... and whatever else I can think
> of ..... later.
>
> BTW, I tried opendir('/localhost/utilities/imap/eml/Trash') and it was
> able to read from there just fine, but perhaps that's moot now.
>
>> So where's the base of what cclient, on Windows, on your
>> configuration, actually pointing?
>
> Apparently that c-client is basing all folder references to %UserProfile%.
>
>>> I hoped someone else had cracked this nut, but I'm beginning to
>>> believe that it is not crackable, so ....
>> It's crackable, but IMHO, the number of PHP instances that are running
>> on Windows hosts that are doing anything user-related locally pales in
>> comparison to the number that are using user-related stuff on unix
>> hosts, which pales in comparison to the number that are doing only
>> webby-webby stuff for non-local clients. So the number of people that
>> have more than an academic interest in cracking this (much less
>> documenting the result) is probably only a handful worldwide, and some
>> of those probably just said "Screw it. I'll upload the mailfiles."
>
> Not quite yet. I might get this.
>
> [And ... yes, ... I use Php (WAMP) almost exclusively now for my own
> browser based apps.]
>
Chuck,
I'm glad you found the problem.
I've been looking through the imap code most of the morning, but it
doesn't look like the same code that comes with Windows (this was from U
of Washington). There is some code in there for opening a file, but
nothing dealing with Windows paths. There is code to open a file, but
there doesn't seem to be a difference between Windows and Linux code in
that area (other than the differences between OS handling). But nothing
to do with "C:\Users\Username" at all.
I suspect you're right - line endings may be a problem.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|