Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #2232 > unrolled thread

Command line cannot fwrite, browser can

Started byAdrienne Boswell <arbpen@yahoo.com>
First post2011-06-17 21:22 +0000
Last post2011-06-18 13:10 +0200
Articles 15 — 5 participants

Back to article view | Back to comp.lang.php


Contents

  Command line cannot fwrite, browser can Adrienne Boswell <arbpen@yahoo.com> - 2011-06-17 21:22 +0000
    Re: Command line cannot fwrite, browser can Denis McMahon <denis.m.f.mcmahon@gmail.com> - 2011-06-18 00:16 +0000
    Re: Command line cannot fwrite, browser can Jerry Stuckle <jstucklex@attglobal.net> - 2011-06-17 20:35 -0400
      Re: Command line cannot fwrite, browser can Adrienne Boswell <arbpen@yahoo.com> - 2011-06-18 03:05 +0000
    Re: Command line cannot fwrite, browser can Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2011-06-18 08:20 +0200
      Re: Command line cannot fwrite, browser can Adrienne Boswell <arbpen@yahoo.com> - 2011-06-18 08:05 +0000
        Re: Command line cannot fwrite, browser can Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2011-06-18 10:27 +0200
        Re: Command line cannot fwrite, browser can Jerry Stuckle <jstucklex@attglobal.net> - 2011-06-18 08:19 -0400
          Re: Command line cannot fwrite, browser can Adrienne Boswell <arbpen@yahoo.com> - 2011-06-18 16:08 +0000
            Re: Command line cannot fwrite, browser can Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2011-06-22 11:48 +0200
              Re: Command line cannot fwrite, browser can Adrienne Boswell <arbpen@yahoo.com> - 2011-06-23 03:44 +0000
                Re: Command line cannot fwrite, browser can Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2011-06-23 09:55 +0200
                  Re: Command line cannot fwrite, browser can Adrienne Boswell <arbpen@yahoo.com> - 2011-06-23 15:29 +0000
                    Re: Command line cannot fwrite, browser can Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2011-06-24 01:00 +0200
    Re: Command line cannot fwrite, browser can Bernd Schulz <ask_me_for_email@invalid.invalid> - 2011-06-18 13:10 +0200

#2232 — Command line cannot fwrite, browser can

FromAdrienne Boswell <arbpen@yahoo.com>
Date2011-06-17 21:22 +0000
SubjectCommand line cannot fwrite, browser can
Message-ID<Xns9F07924644CD1arbpenyahoocom@88.198.244.100>
Okay, I give up!  I pulled the very last hair out of my head, and now I 
am asking for help.

This is a Win2003 SP2 server running Plesk PHP5 on Microsoft-IIS/6.0.  
Why am I using PHP on Win?  The main application was written in Classic 
ASP, hence the Windows server.  I need to run a script from the command 
line so I can call it with the task manager to run every night.

Using the command line, the script gives a warning, and then fails saying 
it cannot write to a file.  Using a browser, the script works flawlessly.

I am thinking it might be a permission issue? I checked and IUSER the 
DOMAIN USER, SYSTEM and Administrator have full permissions on the file
(s) in question.  Is there another user I should be including?  The batch 
file is running as Administrator.

The other issue is that the file giving a warning IS on the server.  All 
the other files mentioned are found without a problem - and again this 
only happens with the command line.

This is the error I am getting:
C:\Inetpub\vhosts\aloyaltycard.com\httpdocs\groupmail>cd c:\parallels
\plesk\additional\pleskphp5
C:\Parallels\Plesk\Additional\PleskPHP5>php.exe c:\inetpub\vhosts
\aloyaltycard.com\httpdocs\groupmail\groupmail.php

Warning: file_get_contents(groupmail1_noname.txt): failed to open stream: 
No such file or directory in C:\Inetpub\vhosts\aloyaltycard.com\httpdocs
\groupmail\groupmail.php on line 88
cannot write to groupmail.html

Here also is the contents of the folder in question:

 Volume in drive C has no label.
 Volume Serial Number is E454-BB08

 Directory of C:\Inetpub\vhosts\aloyaltycard.com\httpdocs\groupmail

06/17/2011  01:15 PM    <DIR>          .
06/17/2011  01:15 PM    <DIR>          ..
06/17/2011  12:37 PM             3,102 groupmail.html
06/17/2011  01:13 PM             5,515 groupmail.php
06/10/2011  05:50 PM               485 groupmail1.txt
06/10/2011  05:51 PM               443 groupmail1_noname.txt
06/10/2011  05:50 PM                93 groupmail1_txt.txt
06/10/2011  05:50 PM             1,838 groupmail2.txt
06/10/2011  05:50 PM             1,858 groupmail2_candidates.txt
06/10/2011  05:50 PM             1,082 groupmail2_customers.txt
06/10/2011  05:50 PM               834 groupmail2_nonames.txt
06/10/2011  05:50 PM             1,515 groupmail2_txt.txt
06/17/2011  12:37 PM             3,122 groupmail_candidates.html
06/17/2011  12:37 PM             2,346 groupmail_customers.html
06/17/2011  12:37 PM             2,056 groupmail_nonames.html
06/17/2011  12:36 PM               138 groupmail_prepare.bat

Just for shits and giggles, here's the contents of my batch file as well:
@echo on
cd c:\parallels\plesk\additional\pleskphp5
php.exe c:\inetpub\vhosts\aloyaltycard.com\httpdocs\groupmail
\groupmail.php


Here is the relavent PHP:

	$filename = "groupmail.html";
	$file_candidate = "groupmail_candidates.html";
	$file_customers = "groupmail_customers.html";
	$file_nonames = "groupmail_nonames.html";
	$groupmhtml1 = "groupmail1.txt";
	$groupmhtml1noname = "groupmail1_noname.txt";

//this above file is the one it cannot find

	$groupmhtml2 = "groupmail2.txt";
	$groupmcandidate = "groupmail2_candidates.txt";
	$groupmcustomers = "groupmail2_customers.txt";
	$groupmnonames = "groupmail2_nonames.txt";


	$groupmail = fopen( $filename,'w' ) or die( 'cannot open 
groupmail.html' );
	$candidates = fopen( $file_candidate,'w' ) or die ( 'cannot open 
groupmail_candidates.html' );
	$customers = fopen( $file_customers,'w' ) or die( 'cannot open'.
$file_customers );
	$nonames = fopen( $file_nonames,'w' ) or die( 'cannot open'.
$file_nonames );
	$group1 = fopen( $groupmhtml1,'r' ) or die( 'cannot open 
groupmail1.txt' );
	$group2 = fopen( $groupmhtml2,'r' ) or die( 'cannot open 
groupmail2.txt' );
	$firstpart = file_get_contents($groupmhtml1);
	$firstnoname = file_get_contents( $groupmhtml1noname );

//warning comes right here
	
	fwrite( $groupmail,$firstpart ) or die( 'cannot write to 
groupmail.html' );

//failure occurs right here


	fwrite( $candidates,$firstpart ) or die ( 'cannot write to 
groupmail_candidates.html' );
	fwrite( $customers,$firstpart ) or die( 'cannot write to'.
$file_customers );
	fwrite( $nonames,$firstnoname ) or die( 'cannot write to'.
$file_nonames );
	
	$sql = "SELECT merchant, address1, line2, phone, email, uri, 
primarycategory, pricategory_id, merchant_ipk, coupon_id, printsleft, 
validto, amount, dollarpercent, image_path FROM madecoupons WHERE status 
<> 'D' ORDER BY id DESC LIMIT 2";
	$rs = db_query( $sql );
	
	$insert = "INSERT INTO madecoupons_mailed (merchant_id, email) 
VALUES ";
	
	
	 while ($row = mysql_fetch_array($rs,MYSQL_NUM))
	{
		
		$merchant = str_replace( "~","'",$row[ 0 ] );
		$address1 = $row[ 1];
		$line2 = $row[ 2];
		$phone = $row[ 3];
		$email = $row[ 4];
		$uri = $row[ 5];
		$category = $row[ 6];
		$catid = $row[ 7];
		$merchant_id = $row[ 8];
		$coupon_id = $row[ 9];
		$maxprints = $row[ 10];
		$description = "Get 10% off!";
		$exceptions = "";
		$validto = $row[ 11];
		$amount = $row[ 12];
		$dollarpercent = $row[ 13];
		$image_path = $row[ 14 ];

		$linetowrite = "<div style=" . chr( 34) . "float: left; 	font-
size: 70%; margin: 0 1em .5em 0; width: 200px; background-color:#fff; 
padding:0 .5em 0 .5em; border:1px solid #c0c0c0; text-align:center;" . 
chr( 34) . "><h2><a href=" . chr( 34 ) . 
"http://aloyaltycard.com/coupon.asp?sid=" . $coupon_id . chr( 34 ) . 
">" . $merchant . "</a></h2>" .$image_path . "<br />".$description ."<br 
/>".$exceptions . "<br /></div>";
	//echo $linetowrite;
	fwrite( $groupmail,$linetowrite );
	fwrite ( $candidates,$linetowrite );
	fwrite ( $customers,$linetowrite );
	fwrite( $nonames,$linetowrite );
	
	$insert = $insert . "( ".$merchant_id.",'".mysql_real_escape_string
($email)."' ),";
	 
	}
	mysql_free_result($rs);
	$lastpart = file_get_contents( $groupmhtml2 );
	$lastcandidate = file_get_contents( $groupmcandidate );
	$lastcustomers = file_get_contents( $groupmcustomers );
	$lastnonames = file_get_contents( $groupmnonames );
	fwrite( $groupmail,$lastpart );
	fwrite( $candidates,$lastcandidate );
	fwrite( $customers,$lastcustomers );
	fwrite( $nonames,$lastnonames );
	
	$insert = substr( $insert,0,strlen( $insert )-1 );

	db_query( $insert );
	
	mysql_close(  );


-- 
Adrienne Boswell at Home
Arbpen Web Site Design Services
http://www.cavalcade-of-coding.info
Please respond to the group so others can share

[toc] | [next] | [standalone]


#2235

FromDenis McMahon <denis.m.f.mcmahon@gmail.com>
Date2011-06-18 00:16 +0000
Message-ID<4dfbee49$0$2440$bed64819@gradwell.net>
In reply to#2232
On Fri, 17 Jun 2011 21:22:52 +0000, Adrienne Boswell wrote:

> I am thinking it might be a permission issue? I checked and IUSER the
> DOMAIN USER, SYSTEM and Administrator have full permissions on the file
> (s) in question.  Is there another user I should be including?  The
> batch file is running as Administrator.

Permissions on the directory maybe?

Rgds

Denis McMahon

[toc] | [prev] | [next] | [standalone]


#2237

FromJerry Stuckle <jstucklex@attglobal.net>
Date2011-06-17 20:35 -0400
Message-ID<itgrt2$u7d$1@dont-email.me>
In reply to#2232
On 6/17/2011 5:22 PM, Adrienne Boswell wrote:
> Okay, I give up!  I pulled the very last hair out of my head, and now I
> am asking for help.
>
> This is a Win2003 SP2 server running Plesk PHP5 on Microsoft-IIS/6.0.
> Why am I using PHP on Win?  The main application was written in Classic
> ASP, hence the Windows server.  I need to run a script from the command
> line so I can call it with the task manager to run every night.
>
> Using the command line, the script gives a warning, and then fails saying
> it cannot write to a file.  Using a browser, the script works flawlessly.
>
> I am thinking it might be a permission issue? I checked and IUSER the
> DOMAIN USER, SYSTEM and Administrator have full permissions on the file
> (s) in question.  Is there another user I should be including?  The batch
> file is running as Administrator.
>
> The other issue is that the file giving a warning IS on the server.  All
> the other files mentioned are found without a problem - and again this
> only happens with the command line.
>
> This is the error I am getting:
> C:\Inetpub\vhosts\aloyaltycard.com\httpdocs\groupmail>cd c:\parallels
> \plesk\additional\pleskphp5
> C:\Parallels\Plesk\Additional\PleskPHP5>php.exe c:\inetpub\vhosts
> \aloyaltycard.com\httpdocs\groupmail\groupmail.php
>
> Warning: file_get_contents(groupmail1_noname.txt): failed to open stream:
> No such file or directory in C:\Inetpub\vhosts\aloyaltycard.com\httpdocs
> \groupmail\groupmail.php on line 88
> cannot write to groupmail.html
>

<lots of other stuff snipped>

Classic windows permission issue.  First of all, ensure you're writing 
to the file you think you are (i.e. use absolute paths, etc.).  Then try 
a windows-related newsgroup.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

[toc] | [prev] | [next] | [standalone]


#2239

FromAdrienne Boswell <arbpen@yahoo.com>
Date2011-06-18 03:05 +0000
Message-ID<Xns9F07CC5D35454arbpenyahoocom@88.198.244.100>
In reply to#2237
Gazing into my crystal ball I observed Jerry Stuckle
<jstucklex@attglobal.net> writing in news:itgrt2$u7d$1@dont-email.me: 

> On 6/17/2011 5:22 PM, Adrienne Boswell wrote:
>> Okay, I give up!  I pulled the very last hair out of my head, and now
>> I am asking for help.
>>
>> This is a Win2003 SP2 server running Plesk PHP5 on Microsoft-IIS/6.0.
>> Why am I using PHP on Win?  The main application was written in
>> Classic ASP, hence the Windows server.  I need to run a script from
>> the command line so I can call it with the task manager to run every
>> night. 
>>
>> Using the command line, the script gives a warning, and then fails
>> saying it cannot write to a file.  Using a browser, the script works
>> flawlessly. 
>>
>> I am thinking it might be a permission issue? I checked and IUSER the
>> DOMAIN USER, SYSTEM and Administrator have full permissions on the
>> file (s) in question.  Is there another user I should be including? 
>> The batch file is running as Administrator.
>>
<snip>

> 
> <lots of other stuff snipped>
> 
> Classic windows permission issue.  First of all, ensure you're writing
> to the file you think you are (i.e. use absolute paths, etc.).  Then
> try a windows-related newsgroup.
> 

Thanks, Jerry.  I was pretty sure it was a permission issue.  I'll head 
over to a windows group, and hopefully they won't tell me it's an .net 
issue like they usually do.  By the way, if you're a father, Happy 
Father's Day, heck, have a happy one even you're not.

-- 
Adrienne Boswell at Home
Arbpen Web Site Design Services
http://www.cavalcade-of-coding.info
Please respond to the group so others can share

[toc] | [prev] | [next] | [standalone]


#2241

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2011-06-18 08:20 +0200
Message-ID<8844491.SEqChMirdb@PointedEars.de>
In reply to#2232
Adrienne Boswell wrote:

> Okay, I give up!  I pulled the very last hair out of my head, and now I
> am asking for help.

Your posting style just begs for <http://www.catb.org/~esr/faqs/smart-
questions.html> as the only answer (in particular 
<http://www.catb.org/~esr/faqs/smart-questions.html#beprecise>).

But I think I have actually found some relevant facts between the lines of 
the 179-lines diary entry that you have posted in place of your good 
question.

Anyhow, please read that tutorial to make it better next time.
 
> […]
> This is the error I am getting:
> C:\Inetpub\vhosts\aloyaltycard.com\httpdocs\groupmail>cd c:\parallels
> \plesk\additional\pleskphp5
> C:\Parallels\Plesk\Additional\PleskPHP5>php.exe c:\inetpub\vhosts
> \aloyaltycard.com\httpdocs\groupmail\groupmail.php
> 
> Warning: file_get_contents(groupmail1_noname.txt): failed to open stream:
> No such file or directory in C:\Inetpub\vhosts\aloyaltycard.com\httpdocs
> \groupmail\groupmail.php on line 88
> cannot write to groupmail.html
> 
> […]
>  Directory of C:\Inetpub\vhosts\aloyaltycard.com\httpdocs\groupmail
> […]
> 06/17/2011  12:37 PM             3,102 groupmail.html
> 06/17/2011  01:13 PM             5,515 groupmail.php
> [...]
> 06/10/2011  05:51 PM               443 groupmail1_noname.txt
> […]
> 
> Just for shits and giggles, here's the contents of my batch file as well:
> @echo on
> cd c:\parallels\plesk\additional\pleskphp5
> php.exe c:\inetpub\vhosts\aloyaltycard.com\httpdocs\groupmail
> \groupmail.php
> 
> Here is the relavent PHP:

No, about 99% of it is quite irrelevant to your question.  Does "reduce test 
case" ring a bell?

> $filename = "groupmail.html";
> […]
> $groupmhtml1noname = "groupmail1_noname.txt";
> 
> //this above file is the one it cannot find

(You don't say …)

> […]
> $groupmail = fopen( $filename,'w' ) or die( 'cannot open
> groupmail.html' );

<http://www.phpfreaks.com/blog/or-die-must-die>

> […]
> $firstpart = file_get_contents($groupmhtml1);
> $firstnoname = file_get_contents( $groupmhtml1noname );
> 
> //warning comes right here

(You don't say …)

> fwrite( $groupmail,$firstpart ) or die( 'cannot write to
> groupmail.html' );
> 
> //failure occurs right here

(You don't say …)

So let me get this straight:

1. You are explicitly cd-ing to c:\parallels\plesk\additional\pleskphp5
   (for whatever reason)

2. You run php.exe
   c:\inetpub\vhosts\aloyaltycard.com\httpdocs\groupmail\groupmail.php

3. You *wonder* why php.exe cannot find the files in the *current*
   *working* *directory* (c:\parallels\plesk\additional\pleskphp5)
   or can write to it?

$ cat ~/tmp/files.php
<?php echo realpath('.') . "\n";

$ php ~/tmp/files.php
/

(This is on GNU/Linux but that does not make a difference, of course.)

ISTM you should have more cups of tea[tm] before coding.  Besides, you 
cannot just take any PHP Web script and run it with the PHP CLI; to begin 
with, the Web script runs under $_SERVER['DOCUMENT_ROOT'] in a much more 
restricted environment; the CLI runs under the root of the local filesystem 
(or "drive", in Windoze).


HTH

PointedEars
-- 
var bugRiddenCrashPronePieceOfJunk = (
    navigator.userAgent.indexOf('MSIE 5') != -1
    && navigator.userAgent.indexOf('Mac') != -1
)  // Plone, register_function.js:16

[toc] | [prev] | [next] | [standalone]


#2243

FromAdrienne Boswell <arbpen@yahoo.com>
Date2011-06-18 08:05 +0000
Message-ID<Xns9F08B03825DEarbpenyahoocom@88.198.244.100>
In reply to#2241
Gazing into my crystal ball I observed Thomas 'PointedEars' Lahn 
<PointedEars@web.de> writing in news:8844491.SEqChMirdb@PointedEars.de:

>> $filename = "groupmail.html";
>> $groupmhtml1noname = "groupmail1_noname.txt";
>> 
>> //this above file is the one it cannot find
> 
> (You don't say)

Turns out I needed to use a single quote instead of a double quote.  The 
script is running just fine now.

> 
>> 
>> $groupmail = fopen( $filename,'w' ) or die( 'cannot open
>> groupmail.html' );
> 
> <http://www.phpfreaks.com/blog/or-die-must-die>
> 


Thank you for all your help, and the link.  I have read it and will 
implement it.

-- 
Adrienne Boswell at Home
Arbpen Web Site Design Services
http://www.cavalcade-of-coding.info
Please respond to the group so others can share

[toc] | [prev] | [next] | [standalone]


#2244

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2011-06-18 10:27 +0200
Message-ID<1652142.aK4W3vaeNJ@PointedEars.de>
In reply to#2243
Adrienne Boswell wrote:

> Thomas 'PointedEars' Lahn [wrote]:
>>> $filename = "groupmail.html";
>>> $groupmhtml1noname = "groupmail1_noname.txt";
>>> 
>>> //this above file is the one it cannot find
>> 
>> (You don't say)
> 
> Turns out I needed to use a single quote instead of a double quote.  The
> script is running just fine now.

Now I am curious: Where exactly?

>>> $groupmail = fopen( $filename,'w' ) or die( 'cannot open
>>> groupmail.html' );
>> 
>> <http://www.phpfreaks.com/blog/or-die-must-die>
> 
> Thank you for all your help, and the link.  I have read it and will
> implement it.

You're welcome.


PointedEars
-- 
var bugRiddenCrashPronePieceOfJunk = (
    navigator.userAgent.indexOf('MSIE 5') != -1
    && navigator.userAgent.indexOf('Mac') != -1
)  // Plone, register_function.js:16

[toc] | [prev] | [next] | [standalone]


#2247

FromJerry Stuckle <jstucklex@attglobal.net>
Date2011-06-18 08:19 -0400
Message-ID<iti559$vvt$1@dont-email.me>
In reply to#2243
On 6/18/2011 4:05 AM, Adrienne Boswell wrote:
> Gazing into my crystal ball I observed Thomas 'PointedEars' Lahn
> <PointedEars@web.de>  writing in news:8844491.SEqChMirdb@PointedEars.de:
>
>>> $filename = "groupmail.html";
>>> $groupmhtml1noname = "groupmail1_noname.txt";
>>>
>>> //this above file is the one it cannot find
>>
>> (You don't say)
>
> Turns out I needed to use a single quote instead of a double quote.  The
> script is running just fine now.
>
>>
>>>
>>> $groupmail = fopen( $filename,'w' ) or die( 'cannot open
>>> groupmail.html' );
>>
>> <http://www.phpfreaks.com/blog/or-die-must-die>
>>
>
>
> Thank you for all your help, and the link.  I have read it and will
> implement it.
>

I think you have another problem.  Single vs. double quotes would not 
make any difference in the code you posted.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

[toc] | [prev] | [next] | [standalone]


#2249

FromAdrienne Boswell <arbpen@yahoo.com>
Date2011-06-18 16:08 +0000
Message-ID<Xns9F085CE966989arbpenyahoocom@88.198.244.100>
In reply to#2247
Gazing into my crystal ball I observed Jerry Stuckle 
<jstucklex@attglobal.net> writing in news:iti559$vvt$1@dont-email.me:

> On 6/18/2011 4:05 AM, Adrienne Boswell wrote:
>> Gazing into my crystal ball I observed Thomas 'PointedEars' Lahn
>> <PointedEars@web.de>  writing in 
news:8844491.SEqChMirdb@PointedEars.de:
>>
>>>> $filename = "groupmail.html";
>>>> $groupmhtml1noname = "groupmail1_noname.txt";
>>>>
>>>> //this above file is the one it cannot find
>>>
>>> (You don't say)
>>
>> Turns out I needed to use a single quote instead of a double quote.  
The
>> script is running just fine now.
>>
>>>
>>>>
>>>> $groupmail = fopen( $filename,'w' ) or die( 'cannot open
>>>> groupmail.html' );
>>>
>>> <http://www.phpfreaks.com/blog/or-die-must-die>
>>>
>>
>>
>> Thank you for all your help, and the link.  I have read it and will
>> implement it.
>>
> 
> I think you have another problem.  Single vs. double quotes would not 
> make any difference in the code you posted.
> 

Originally, I was not using an absolute path, just the name of the file, 
and the script was saying the last file was not found, and could not 
write to the first file.

Then, I tried using the whole path, and I got a message about an invalid 
stream, and I Googled and found a post about single quotes vs double 
quotes, tried it, and it worked.

Yes, this is nagging me, too.  I just checked it ran it right now (I also 
moved the script so it is not accessible to the WWW), and it's doing just 
fine.  So far so good. I'm letting sleeping dogs lie, for now.

-- 
Adrienne Boswell at Home
Arbpen Web Site Design Services
http://www.cavalcade-of-coding.info
Please respond to the group so others can share

[toc] | [prev] | [next] | [standalone]


#2286

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2011-06-22 11:48 +0200
Message-ID<8855064.SEqChMirdb@PointedEars.de>
In reply to#2249
Adrienne Boswell wrote:

> Jerry Stuckle writing:
>> On 6/18/2011 4:05 AM, Adrienne Boswell wrote:
>>> Thomas 'PointedEars' Lahn writing:
>>>>> $groupmail = fopen( $filename,'w' ) or die( 'cannot open
>>>>> groupmail.html' );
>>>>
>>>> <http://www.phpfreaks.com/blog/or-die-must-die>
>>>
>>> Thank you for all your help, and the link.  I have read it and will
>>> implement it.
>> 
>> I think you have another problem.  Single vs. double quotes would not
>> make any difference in the code you posted.
> 
> Originally, I was not using an absolute path, just the name of the file,
> and the script was saying the last file was not found, and could not
> write to the first file.
> 
> Then, I tried using the whole path, and I got a message about an invalid
> stream, and I Googled and found a post about single quotes vs double
> quotes, tried it, and it worked.

Jerry is correct: Single quotes vs. double quotes make absolutely no 
difference in the code that you have posted, since there are no variable 
references in or adjacent to the string values.  Without loss of generality, 
they also make no difference when enclosing file paths, unless the paths 
contain the delimiter character (in which case the string value would end 
prematurely, which might contribute to the fact that a file could not be 
found).
 
> Yes, this is nagging me, too.  I just checked it ran it right now (I also
> moved the script so it is not accessible to the WWW),

This is not the World Wide Web, an application of the Internet, but Usenet, 
a part of the Network News network (a growing part of which is part of the 
Internet).  So you may – SHOULD – as well post the *relevant* *parts* of 
your working code here.

> and it's doing just fine.  So far so good. I'm letting sleeping dogs lie,
> for now.

So, without evidence to the contrary, one must assume that you have not 
understood what you are doing in the first place, that you are not willing 
to understand the problems that this has caused you in the foreseeable 
future, and that you are not willing to feed back the insights you have 
gained from other code to the community that tried to help you for free.

That puts into serious doubt whether you are worth getting further, rather 
time-consuming, answers like the ones I give to you.  Think about that.

And skip the attribution novels, please.


PointedEars
-- 
Prototype.js was written by people who don't know javascript for people
who don't know javascript. People who don't know javascript are not
the best source of advice on designing systems that use javascript.
  -- Richard Cornford, cljs, <f806at$ail$1$8300dec7@news.demon.co.uk>

[toc] | [prev] | [next] | [standalone]


#2304

FromAdrienne Boswell <arbpen@yahoo.com>
Date2011-06-23 03:44 +0000
Message-ID<Xns9F0CD309DCAFAarbpenyahoocom@88.198.244.100>
In reply to#2286
Thomas 'PointedEars' Lahn <PointedEars@web.de> wrote at 
news:8855064.SEqChMirdb@PointedEars.de: 

> Adrienne Boswell wrote:
> 
>> Jerry Stuckle writing:
>>> On 6/18/2011 4:05 AM, Adrienne Boswell wrote:
>>>> Thomas 'PointedEars' Lahn writing:
>>>>>> $groupmail = fopen( $filename,'w' ) or die( 'cannot open
>>>>>> groupmail.html' );
>>>>>
>>>>> <http://www.phpfreaks.com/blog/or-die-must-die>
>>>>
>>>> Thank you for all your help, and the link.  I have read it and will
>>>> implement it.
>>> 
>>> I think you have another problem.  Single vs. double quotes would
>>> not make any difference in the code you posted.
>> 
>> Originally, I was not using an absolute path, just the name of the
>> file, and the script was saying the last file was not found, and
>> could not write to the first file.
>> 
>> Then, I tried using the whole path, and I got a message about an
>> invalid stream, and I Googled and found a post about single quotes vs
>> double quotes, tried it, and it worked.
> 
> Jerry is correct: Single quotes vs. double quotes make absolutely no 
> difference in the code that you have posted, since there are no
> variable references in or adjacent to the string values.  Without loss
> of generality, they also make no difference when enclosing file paths,
> unless the paths contain the delimiter character (in which case the
> string value would end prematurely, which might contribute to the fact
> that a file could not be found).
>  
>> Yes, this is nagging me, too.  I just checked it ran it right now (I
>> also moved the script so it is not accessible to the WWW),
> 
> This is not the World Wide Web, an application of the Internet, but
> Usenet, a part of the Network News network (a growing part of which is
> part of the Internet).  So you may – SHOULD – as well post the
> *relevant* *parts* of your working code here.


Ok, here is the relavent piece of code (the relavent parts were snipped by 
Jerry).

Originally (with line numbers and I have replaced the real domain with 
example.com):

68	$filename = "C:\Inetpub\vhosts\example.com\httpdocs\groupmail
\groupmail.html";

80	$groupmail = fopen( $filename,'w' ) or die( 'cannot open 
groupmail.html' );


Warning: fopen(C:\Inetpub?hosts\example.com\httpdocs\groupmail\groupmail.ht
ml): failed to open stream: Invalid argument in C:\Inetpub\vhosts
\example.com\httpdocs\groupmail.php on line 80
cannot open groupmail.html


So when I changed line 68 to:

68	$filename = 'C:\Inetpub\vhosts\example.com\httpdocs\groupmail
\groupmail.html';


> 
>> and it's doing just fine.  So far so good. I'm letting sleeping dogs
>> lie, for now.
> 
> So, without evidence to the contrary, one must assume that you have
> not understood what you are doing in the first place,

Actually, I do understand what I did, and wrote the script to perform what 
I expected it to do.  On my developer box, Windows 7 Ultimate IIS 6, the 
original script ran flawlessly.  It was not until I put it on the virtual 
host box that it started acting badly.

 that you are not
> willing to understand the problems that this has caused you in the
> foreseeable future,

That's why I'm here - to gain insight into what could bite me in the ass in 
the future.

 and that you are not willing to feed back the
> insights you have gained from other code to the community that tried
> to help you for free.

I beg to differ with you there.  I may not contribute much to this 
particular group, I am mostly a lurker here, but I do contribute often to 
the HTML groups, and when they were alive the ASP classic groups.
 
> 
> That puts into serious doubt whether you are worth getting further,
> rather time-consuming, answers like the ones I give to you.  Think
> about that. 

One of the reasons I came here was because I have high respect for your 
knowledge.  You might think that because I'm girl I have thin skin, but I 
don't.  I have been around Usenet since 1996, so I have seen a lot, 
including your latest run-in with Jukka Korpela. 


> 
> And skip the attribution novels, please.
> 
> 
> PointedEars



-- 
Adrienne Boswell at Home
Arbpen Web Site Design Services
http://www.cavalcade-of-coding.info
Please respond to the group so others can share

[toc] | [prev] | [next] | [standalone]


#2307

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2011-06-23 09:55 +0200
Message-ID<2972164.SPkdTlGXAF@PointedEars.de>
In reply to#2304
Adrienne Boswell wrote:

> Thomas 'PointedEars' Lahn wrote:
>> Adrienne Boswell wrote:
>>> Jerry Stuckle writing:
>>>> Adrienne Boswell wrote:
>>>>> Thomas 'PointedEars' Lahn writing:
>>>>>>> $groupmail = fopen( $filename,'w' ) or die( 'cannot open
>>>>>>> groupmail.html' );
>>>>>> <http://www.phpfreaks.com/blog/or-die-must-die>
>>>>> Thank you for all your help, and the link.  I have read it and will
>>>>> implement it.
>>>> I think you have another problem.  Single vs. double quotes would
>>>> not make any difference in the code you posted.
>>> […]
>>> Yes, this is nagging me, too.  I just checked it ran it right now (I
>>> also moved the script so it is not accessible to the WWW),
>> 
>> This is not the World Wide Web, an application of the Internet, but
>> Usenet, a part of the Network News network (a growing part of which is
>> part of the Internet).  So you may – SHOULD – as well post the
>> *relevant* *parts* of your working code here.
> 
> Ok, here is the relavent piece of code (the relavent parts were snipped by
> Jerry).

ACK, thanks.

> Originally (with line numbers and I have replaced the real domain with
> example.com):
> 
> 68	$filename = "C:\Inetpub\vhosts\example.com\httpdocs\groupmail
> \groupmail.html";
> 
> 80	$groupmail = fopen( $filename,'w' ) or die( 'cannot open
> groupmail.html' );
> 
> 
> Warning:
> fopen(C:\Inetpub?hosts\example.com\httpdocs\groupmail\groupmail.ht ml):
> failed to open stream: Invalid argument in C:\Inetpub\vhosts
> \example.com\httpdocs\groupmail.php on line 80 cannot open groupmail.html
> 
> 
> So when I changed line 68 to:
> 
> 68	$filename = 'C:\Inetpub\vhosts\example.com\httpdocs\groupmail
> \groupmail.html';

I can see the problem now.  You have used the sequence "\v" in your string 
literal.  That makes the difference, because in double-quoted strings it is 
parsed as a <VT> (vertical tab) character (that originates from early TTYs 
and is hardly used nowadays, but kept for backwards compatibility [1]).

Hence the question mark in the warning after the "b" of "Inetpub", and the 
missing "v" after it.  <VT> is not one of the printable characters, so a 
replacement character is used to display it.

In a single-quoted string, that and most other escape sequences carry no 
special meaning [2].  So the path fits, and the file can be opened, then.

Since you cannot know beforehand which escape sequences are considered by a 
certain version of PHP (other than `\\'), you should always escape literal 
backslashes in string literals: "\\" or '\\' [2].  In fact, you MUST escape 
them when at the end of the string value, because otherwise \" or \' 
constitute escape sequences of themself, and the string value is not 
terminated:

$ php -a
Interactive mode enabled

<?php echo "foo\";
^D
PHP Parse error:  syntax error, unexpected $end, expecting T_VARIABLE or 
T_DOLLAR_OPEN_CURLY_BRACES or T_CURLY_OPEN in - on line 2

$ php -a
Interactive mode enabled

<?php echo 'foo\';
^D
PHP Parse error:  syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in - on 
line 1

$ php -v
PHP 5.3.3-7+squeeze1 with Suhosin-Patch (cli) (built: Mar 18 2011 17:22:52) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with XCache v1.3.1, Copyright (c) 2005-2010, by mOo
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
    with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH

[FYI: ^D stands for the keyboard shortcut Ctrl+D, which prints <ETX> (end of 
text), an ASCII character (code point 0x03) that signals to the process that 
the standard input stream is finished.  It can also be used to `logout' 
quickly from a unixoid shell.]

But for file paths you can replace the backslashes with forward slashes 
(`/') even in WinDOS, which do not need to be escaped [3].

>> That puts into serious doubt whether you are worth getting further,
>> rather time-consuming, answers like the ones I give to you.  Think
>> about that.
> 
> One of the reasons I came here was because I have high respect for your
> knowledge.

Thank you.

> You might think that because I'm girl I have thin skin, but I don't.

All people are the same before PointedEars ;-)

> I have been around Usenet since 1996, so I have seen a lot,
> including your latest run-in with Jukka Korpela.
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
What is that supposed to mean?  (You may reply to this by PM.)


Please trim your quotes to the relevant minimum [4]. 


PointedEars
___________
[1] <http://en.wikipedia.org/wiki/Vertical_tab#Tab_characters>
[2] <http://php.net/manual/en/language.types.string.php>
[3] <http://php.net/fopen>
[4] <http://www.netmeister.org/news/learn2quote.html>
-- 
Danny Goodman's books are out of date and teach practices that are
positively harmful for cross-browser scripting.
 -- Richard Cornford, cljs, <cife6q$253$1$8300dec7@news.demon.co.uk> (2004)

[toc] | [prev] | [next] | [standalone]


#2313

FromAdrienne Boswell <arbpen@yahoo.com>
Date2011-06-23 15:29 +0000
Message-ID<Xns9F0D564FB2806arbpenyahoocom@88.198.244.100>
In reply to#2307
Thomas 'PointedEars' Lahn
<PointedEars@web.de> wrote in news:2972164.SPkdTlGXAF@PointedEars.de: 

>> 68     $filename = 'C:\Inetpub\vhosts\example.com\httpdocs\groupmail
>> \groupmail.html';
> 
> I can see the problem now.  You have used the sequence "\v" in your
> string literal.  That makes the difference, because in double-quoted
> strings it is parsed as a <VT> (vertical tab) character (that
> originates from early TTYs and is hardly used nowadays, but kept for
> backwards compatibility [1]). 
> 

Thomas, thank you for pointing out what was going on here, the reasons 
and solutions.  I understand  - oddly enough it reminds me of when the 
New York office got my EBCIDIC instructions wrong, and turned one of the 
Teletype terminals into a printer (1986) - the terminal understood VT 
very well, but it had issues trying to print checks, as the cashiering 
department was frantically wondering where the checks were.  

I do so much appreciate the time you have taken.



-- 
Adrienne Boswell at Home
Arbpen Web Site Design Services
http://www.cavalcade-of-coding.info
Please respond to the group so others can share

[toc] | [prev] | [next] | [standalone]


#2328

FromThomas 'PointedEars' Lahn <PointedEars@web.de>
Date2011-06-24 01:00 +0200
Message-ID<2390373.ArG6xLiZAS@PointedEars.de>
In reply to#2313
Adrienne Boswell wrote:

> Thomas, thank you for pointing out what was going on here, the reasons
> and solutions.  I understand  - oddly enough it reminds me of when the
> New York office got my EBCIDIC instructions wrong, and turned one of the
> Teletype terminals into a printer (1986) - the terminal understood VT
> very well, but it had issues trying to print checks, as the cashiering
> department was frantically wondering where the checks were.
> 
> I do so much appreciate the time you have taken.

You're welcome.  And thanks for the funny bedtime story *g*


Regards,

PointedEars
-- 
Anyone who slaps a 'this page is best viewed with Browser X' label on
a Web page appears to be yearning for the bad old days, before the Web,
when you had very little chance of reading a document written on another
computer, another word processor, or another network. -- Tim Berners-Lee

[toc] | [prev] | [next] | [standalone]


#2245

FromBernd Schulz <ask_me_for_email@invalid.invalid>
Date2011-06-18 13:10 +0200
Message-ID<4dfc878f$0$7610$9b4e6d93@newsspool1.arcor-online.net>
In reply to#2232
Am 17.06.2011 23:22, schrieb Adrienne Boswell:
>
> Warning: file_get_contents(groupmail1_noname.txt): failed to open stream:
> No such file or directory in C:\Inetpub\vhosts\aloyaltycard.com\httpdocs
> \groupmail\groupmail.php on line 88
> cannot write to groupmail.html
>
You are in the wrong directory, when your Script starts.
You are looking for:
http://php.net/manual/de/function.chdir.php

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.php


csiph-web