Bluehost.com Web Hosting $6.95

Exec() function not doing as I want (OSX)

This is a discussion on Exec() function not doing as I want (OSX) within the PHP Language forums, part of the PHP Programming Forums category; Gordon Burditt wrote: >>> Readable and executable are two different things. > > And writable is another different ...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #11 (permalink)  
Old 09-23-2008
Maarten
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Gordon Burditt wrote:
>>> Readable and executable are two different things.

>
> And writable is another different thing.
>
>> True, but my knowledge on the permission thing is a bit limited.
>> However, the permission for the specific file are:
>> -rwxrwxrwx 1 maarten staff 18176 Sep 19 15:11 discid
>>
>> I guess this should allow the server to execute the program.

>
> It is my experience that Apache will refuse to execute any file
> that it can write. Excessive (write) permissions are just
> as bad as insufficient (execute) permissions.
>
>



I've just changed the permission of the program to 111. Still, the
program is not executed.

Maarten
Reply With Quote
  #12 (permalink)  
Old 09-23-2008
Jerry Stuckle
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
> Gordon Burditt wrote:
>>>> Readable and executable are two different things.

>>
>> And writable is another different thing.
>>
>>> True, but my knowledge on the permission thing is a bit limited.
>>> However, the permission for the specific file are:
>>> -rwxrwxrwx 1 maarten staff 18176 Sep 19 15:11 discid
>>>
>>> I guess this should allow the server to execute the program.

>>
>> It is my experience that Apache will refuse to execute any file
>> that it can write. Excessive (write) permissions are just
>> as bad as insufficient (execute) permissions.
>>
>>

>
>
> I've just changed the permission of the program to 111. Still, the
> program is not executed.
>
> Maarten
>


IIRC, it has to be readable, also. I always use 550 or 555 for executables.

How do you know it's not being executed? Are you displaying errors in
your browser - in your php.ini file you should have:

error_reporting=E_ALL
display_errors=on

And what is the returned value from exec()?

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

Reply With Quote
  #13 (permalink)  
Old 09-23-2008
Maarten
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Jerry Stuckle wrote:
> Maarten wrote:
>> Gordon Burditt wrote:
>>>>> Readable and executable are two different things.
>>>
>>> And writable is another different thing.
>>>
>>>> True, but my knowledge on the permission thing is a bit limited.
>>>> However, the permission for the specific file are:
>>>> -rwxrwxrwx 1 maarten staff 18176 Sep 19 15:11 discid
>>>>
>>>> I guess this should allow the server to execute the program.
>>>
>>> It is my experience that Apache will refuse to execute any file
>>> that it can write. Excessive (write) permissions are just
>>> as bad as insufficient (execute) permissions.
>>>
>>>

>>
>>
>> I've just changed the permission of the program to 111. Still, the
>> program is not executed.
>>
>> Maarten
>>

>
> IIRC, it has to be readable, also. I always use 550 or 555 for
> executables.
>
> How do you know it's not being executed? Are you displaying errors in
> your browser - in your php.ini file you should have:
>
> error_reporting=E_ALL
> display_errors=on
>
> And what is the returned value from exec()?
>


Changed the executable's permission to 555, no change

Just double (php.ini and phpinfo() error reporting and display errors
have the correct values. Exec() does not return a value when executed as
below:

$discOutput = exec('/Volumes/Users/maarten/discid dev/rdisk2',
$ooutpuut);

Both $discOutput and $ooutpuut are empty. Same as when I would fill in
some bogus values in the function.

Maarten


Reply With Quote
  #14 (permalink)  
Old 09-23-2008
Maarten
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Bill H wrote:
> On Sep 19, 3:35 pm, Maarten <b...@blah.com> wrote:
>> Howdy,
>>
>> Recently I switched from a Windows PC to Mac OS-X 10.5 (php v5.2.6) and
>> I have a little problem with one function within my cd-management script.
>>
>> For extracting a bit of info from my cd's I have an executable which I
>> execute with exec():
>>
>> $discOutput = exec('./discid /dev/rdisk2');
>>
>> The executable is in the same directory as the php script is in. When I
>> run the same line from Terminal within that same directory it gives me
>> the output I want, php doesn't give me any ouput at all.
>>
>> Asking exec() for output on a basic function like 'ls' does return a
>> value, so the function is active. I guess somehow I am not pointing to
>> the discid executable correctly, but I don't see what is wrong.
>>
>> Can someone tell me what I am doing wrong?
>>
>> Thanks in advance, Maarten

>
> I had a similar issue when runnning a script in linux under apache. It
> took awhile for me to figure out I had to "cd" to the directory I
> wanted to work in and use an absolute path to the exe that is being
> executed. You may want to try something like this:
>
> $discOutput = exec('cd /dev/rdisk2;[fullpathto discid]/discid');
>
> Bill H


I changed the code to:

$discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
$ooutpuut);

Also have I changed the permission of discid to 555. No change, however.
The problem remains. Both returned variable/array are empty.

Maarten
Reply With Quote
  #15 (permalink)  
Old 09-23-2008
Bill H
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 23, 3:36*pm, Maarten <b...@blah.com> wrote:
> Bill H wrote:
> > On Sep 19, 3:35 pm, Maarten <b...@blah.com> wrote:
> >> Howdy,

>
> >> Recently I switched from a Windows PC to Mac OS-X 10.5 (php v5.2.6) and
> >> I have a little problem with one function within my cd-management script.

>
> >> For extracting a bit of info from my cd's I have an executable which I
> >> execute with exec():

>
> >> * * *$discOutput = exec('./discid /dev/rdisk2');

>
> >> The executable is in the same directory as the php script is in. When I
> >> run the same line from Terminal within that same directory it gives me
> >> the output I want, php doesn't give me any ouput at all.

>
> >> Asking exec() for output on a basic function like 'ls' does return a
> >> value, so the function is active. I guess somehow I am not pointing to
> >> the discid executable correctly, but I don't see what is wrong.

>
> >> Can someone tell me what I am doing wrong?

>
> >> Thanks in advance, Maarten

>
> > I had a similar issue when runnning a script in linux under apache. It
> > took awhile for me to figure out I had to "cd" to the directory I
> > wanted to work in and use an absolute path to the exe that is being
> > executed. You may want to try something like this:

>
> > $discOutput = exec('cd /dev/rdisk2;[fullpathto discid]/discid');

>
> > Bill H

>
> I changed the code to:
>
> * * *$discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
> $ooutpuut);
>
> Also have I changed the permission of discid to 555. No change, however.
> The problem remains. Both returned variable/array are empty.
>
> Maarten- Hide quoted text -
>
> - Show quoted text -


Try to go around the problem to narrow it down. Do you have a
different executable that you can put in the same location and use
exec() on it to see if the exec() is working right, if not then you
know that discid should not be the issue, if so then there is
something in discid.

Bill H
Reply With Quote
  #16 (permalink)  
Old 09-23-2008
Bill H
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 23, 3:36*pm, Maarten <b...@blah.com> wrote:
> Bill H wrote:
> > On Sep 19, 3:35 pm, Maarten <b...@blah.com> wrote:
> >> Howdy,

>
> >> Recently I switched from a Windows PC to Mac OS-X 10.5 (php v5.2.6) and
> >> I have a little problem with one function within my cd-management script.

>
> >> For extracting a bit of info from my cd's I have an executable which I
> >> execute with exec():

>
> >> * * *$discOutput = exec('./discid /dev/rdisk2');

>
> >> The executable is in the same directory as the php script is in. When I
> >> run the same line from Terminal within that same directory it gives me
> >> the output I want, php doesn't give me any ouput at all.

>
> >> Asking exec() for output on a basic function like 'ls' does return a
> >> value, so the function is active. I guess somehow I am not pointing to
> >> the discid executable correctly, but I don't see what is wrong.

>
> >> Can someone tell me what I am doing wrong?

>
> >> Thanks in advance, Maarten

>
> > I had a similar issue when runnning a script in linux under apache. It
> > took awhile for me to figure out I had to "cd" to the directory I
> > wanted to work in and use an absolute path to the exe that is being
> > executed. You may want to try something like this:

>
> > $discOutput = exec('cd /dev/rdisk2;[fullpathto discid]/discid');

>
> > Bill H

>
> I changed the code to:
>
> * * *$discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
> $ooutpuut);
>
> Also have I changed the permission of discid to 555. No change, however.
> The problem remains. Both returned variable/array are empty.
>
> Maarten- Hide quoted text -
>
> - Show quoted text -


Also this should not apply to Mac OSX, but on Vista with Xampp, to get
executables to run from the exec() in php, I had to chase down cmd.exe
in the windows\system32 folder and set it to always run as
administrator before any exe's were executable using exec(). Maybe
something similar on the mac?

Bill H
Reply With Quote
  #17 (permalink)  
Old 09-24-2008
Jerry Stuckle
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
> Jerry Stuckle wrote:
>> Maarten wrote:
>>> Gordon Burditt wrote:
>>>>>> Readable and executable are two different things.
>>>>
>>>> And writable is another different thing.
>>>>
>>>>> True, but my knowledge on the permission thing is a bit limited.
>>>>> However, the permission for the specific file are:
>>>>> -rwxrwxrwx 1 maarten staff 18176 Sep 19 15:11 discid
>>>>>
>>>>> I guess this should allow the server to execute the program.
>>>>
>>>> It is my experience that Apache will refuse to execute any file
>>>> that it can write. Excessive (write) permissions are just
>>>> as bad as insufficient (execute) permissions.
>>>>
>>>>
>>>
>>>
>>> I've just changed the permission of the program to 111. Still, the
>>> program is not executed.
>>>
>>> Maarten
>>>

>>
>> IIRC, it has to be readable, also. I always use 550 or 555 for
>> executables.
>>
>> How do you know it's not being executed? Are you displaying errors in
>> your browser - in your php.ini file you should have:
>>
>> error_reporting=E_ALL
>> display_errors=on
>>
>> And what is the returned value from exec()?
>>

>
> Changed the executable's permission to 555, no change
>
> Just double (php.ini and phpinfo() error reporting and display errors
> have the correct values. Exec() does not return a value when executed as
> below:
>
> $discOutput = exec('/Volumes/Users/maarten/discid dev/rdisk2',
> $ooutpuut);
>
> Both $discOutput and $ooutpuut are empty. Same as when I would fill in
> some bogus values in the function.
>
> Maarten
>
>
>


Well, if the program can't be executed, you should get an error message
back.

Back to a basic question. How do you know the program is not being
executed?

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

Reply With Quote
  #18 (permalink)  
Old 09-24-2008
Maarten
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Jerry Stuckle wrote:
> Maarten wrote:
>> Jerry Stuckle wrote:
>>> Maarten wrote:
>>>> Gordon Burditt wrote:
>>>>>>> Readable and executable are two different things.
>>>>>
>>>>> And writable is another different thing.
>>>>>
>>>>>> True, but my knowledge on the permission thing is a bit limited.
>>>>>> However, the permission for the specific file are:
>>>>>> -rwxrwxrwx 1 maarten staff 18176 Sep 19 15:11 discid
>>>>>>
>>>>>> I guess this should allow the server to execute the program.
>>>>>
>>>>> It is my experience that Apache will refuse to execute any file
>>>>> that it can write. Excessive (write) permissions are just
>>>>> as bad as insufficient (execute) permissions.
>>>>>
>>>>>
>>>>
>>>>
>>>> I've just changed the permission of the program to 111. Still, the
>>>> program is not executed.
>>>>
>>>> Maarten
>>>>
>>>
>>> IIRC, it has to be readable, also. I always use 550 or 555 for
>>> executables.
>>>
>>> How do you know it's not being executed? Are you displaying errors
>>> in your browser - in your php.ini file you should have:
>>>
>>> error_reporting=E_ALL
>>> display_errors=on
>>>
>>> And what is the returned value from exec()?
>>>

>>
>> Changed the executable's permission to 555, no change
>>
>> Just double (php.ini and phpinfo() error reporting and display errors
>> have the correct values. Exec() does not return a value when executed
>> as below:
>>
>> $discOutput = exec('/Volumes/Users/maarten/discid dev/rdisk2',
>> $ooutpuut);
>>
>> Both $discOutput and $ooutpuut are empty. Same as when I would fill in
>> some bogus values in the function.
>>
>> Maarten
>>
>>
>>

>
> Well, if the program can't be executed, you should get an error message
> back.
>
> Back to a basic question. How do you know the program is not being
> executed?
>


Well, it's hard to be sure since the only thing that it does is reading
the the TOC of a CD an return it. Since it's not enough reading to make
my cd-rom light up and the function returns false, I assume it is not
being executed.

But why it behaves as it does I don't know since other functions such as
ls and the program whois, located in the same directory as discid, are
working fine. Also are the permissions set similar.

Maarten
Reply With Quote
  #19 (permalink)  
Old 09-24-2008
Maarten
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Bill H wrote:
> On Sep 23, 3:36 pm, Maarten <b...@blah.com> wrote:
>> Bill H wrote:
>>> On Sep 19, 3:35 pm, Maarten <b...@blah.com> wrote:
>>>> Howdy,
>>>> Recently I switched from a Windows PC to Mac OS-X 10.5 (php v5.2.6) and
>>>> I have a little problem with one function within my cd-management script.
>>>> For extracting a bit of info from my cd's I have an executable which I
>>>> execute with exec():
>>>> $discOutput = exec('./discid /dev/rdisk2');
>>>> The executable is in the same directory as the php script is in. When I
>>>> run the same line from Terminal within that same directory it gives me
>>>> the output I want, php doesn't give me any ouput at all.
>>>> Asking exec() for output on a basic function like 'ls' does return a
>>>> value, so the function is active. I guess somehow I am not pointing to
>>>> the discid executable correctly, but I don't see what is wrong.
>>>> Can someone tell me what I am doing wrong?
>>>> Thanks in advance, Maarten
>>> I had a similar issue when runnning a script in linux under apache. It
>>> took awhile for me to figure out I had to "cd" to the directory I
>>> wanted to work in and use an absolute path to the exe that is being
>>> executed. You may want to try something like this:
>>> $discOutput = exec('cd /dev/rdisk2;[fullpathto discid]/discid');
>>> Bill H

>> I changed the code to:
>>
>> $discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
>> $ooutpuut);
>>
>> Also have I changed the permission of discid to 555. No change, however.
>> The problem remains. Both returned variable/array are empty.
>>
>> Maarten- Hide quoted text -
>>
>> - Show quoted text -

>
> Try to go around the problem to narrow it down. Do you have a
> different executable that you can put in the same location and use
> exec() on it to see if the exec() is working right, if not then you
> know that discid should not be the issue, if so then there is
> something in discid.
>
> Bill H


I tried already before to execute the ls command, and that one returns
the directory listings fine. Also did I copy the whois program to the
same directory as discid and that one is also executed nicely from
within php, exec(). Permissions where set the same.

The exec() function is working. But what makes discid different I don't
know. It is working the same as all other programs in the terminal . .
Reply With Quote
  #20 (permalink)  
Old 09-24-2008
Bill H
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 24, 10:27*am, Maarten <b...@blah.com> wrote:
> Bill H wrote:
> > On Sep 23, 3:36 pm, Maarten <b...@blah.com> wrote:
> >> Bill H wrote:
> >>> On Sep 19, 3:35 pm, Maarten <b...@blah.com> wrote:
> >>>> Howdy,
> >>>> Recently I switched from a Windows PC to Mac OS-X 10.5 (php v5.2.6) and
> >>>> I have a little problem with one function within my cd-management script.
> >>>> For extracting a bit of info from my cd's I have an executable whichI
> >>>> execute with exec():
> >>>> * * *$discOutput = exec('./discid /dev/rdisk2');
> >>>> The executable is in the same directory as the php script is in. When I
> >>>> run the same line from Terminal within that same directory it gives me
> >>>> the output I want, php doesn't give me any ouput at all.
> >>>> Asking exec() for output on a basic function like 'ls' does return a
> >>>> value, so the function is active. I guess somehow I am not pointing to
> >>>> the discid executable correctly, but I don't see what is wrong.
> >>>> Can someone tell me what I am doing wrong?
> >>>> Thanks in advance, Maarten
> >>> I had a similar issue when runnning a script in linux under apache. It
> >>> took awhile for me to figure out I had to "cd" to the directory I
> >>> wanted to work in and use an absolute path to the exe that is being
> >>> executed. You may want to try something like this:
> >>> $discOutput = exec('cd /dev/rdisk2;[fullpathto discid]/discid');
> >>> Bill H
> >> I changed the code to:

>
> >> * * *$discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
> >> $ooutpuut);

>
> >> Also have I changed the permission of discid to 555. No change, however.
> >> The problem remains. Both returned variable/array are empty.

>
> >> Maarten- Hide quoted text -

>
> >> - Show quoted text -

>
> > Try to go around the problem to narrow it down. Do you have a
> > different executable that you can put in the same location and use
> > exec() on it to see if the exec() is working right, if not then you
> > know that discid should not be the issue, if so then there is
> > something in discid.

>
> > Bill H

>
> I tried already before to execute the ls command, and that one returns
> the directory listings fine. Also did I copy the whois program to the
> same directory as discid and that one is also executed nicely from
> within php, exec(). Permissions where set the same.
>
> The exec() function is working. But what makes discid different I don't
> know. It is working the same as all other programs in the terminal . .- Hide quoted text -
>
> - Show quoted text -


Is discid sending out the text in a format that the exec() can get
(STDOUT ?)? Can you pipe the results to a text file? In windows I
would use somethign like $this = exec('discid > here.txt');

Bill H
Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 10:17 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0