Connecting Tech Pros Worldwide Help | Site Map

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

 
LinkBack Thread Tools Search this Thread
  #1  
Old September 19th, 2008, 07:45 PM
Maarten
Guest
 
Posts: n/a
Default Exec() function not doing as I want (OSX)

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

  #2  
Old September 19th, 2008, 09:35 PM
r0g
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
Quote:
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
Well I cant say for sure but I've just switched from Windows to Linux
and had been having some similar problems execing scripts...

Try adding the containing folder to your system path and/or using
absolute path instead of "./" That fixed my problems anyway.

Good luck :-)

Roger.
  #3  
Old September 19th, 2008, 09:45 PM
Jerry Stuckle
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
Quote:
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
>
It could also be a permission problem - is the Apache web server the
owner of the file, or does it have access to the file?

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

  #4  
Old September 23rd, 2008, 04:05 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Well I cant say for sure but I've just switched from Windows to Linux
Quote:
and had been having some similar problems execing scripts...
>
Try adding the containing folder to your system path and/or using
absolute path instead of "./" That fixed my problems anyway.
Well, after some technical issues I tried to add the program to the
$PATH so I don't need to specify a location anymore and also I added the
absolute path to the php script.

Both methods work fine in the terminal but within the script nothing is
returned

Maarten
  #5  
Old September 23rd, 2008, 04:05 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

It could also be a permission problem - is the Apache web server the
Quote:
owner of the file, or does it have access to the file?

Apache is not the owner of the file and as it is located in the same
folder as the php script it, it should have access to it (server is for
localhost use only). According to info of the program provided by osx,
the program can be read by Everyone, Staff, and me. I guess Apache
should have enough privileges to execute the program.

Maarten
  #6  
Old September 23rd, 2008, 04:25 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
Quote:
Quote:
It could also be a permission problem - is the Apache web server the
>owner of the file, or does it have access to the file?
>
>
Apache is not the owner of the file and as it is located in the same
folder as the php script it, it should have access to it (server is for
localhost use only). According to info of the program provided by osx,
the program can be read by Everyone, Staff, and me. I guess Apache
should have enough privileges to execute the program.
>
Maarten
When I write filesize() and file_exists() it returns the desired values,
so php can get info on the specific executable eventhough it seems to be
invisible to exec().

Maarten
  #7  
Old September 23rd, 2008, 04:25 PM
Jerry Stuckle
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
Quote:
Quote:
It could also be a permission problem - is the Apache web server the
>owner of the file, or does it have access to the file?
>
>
Apache is not the owner of the file and as it is located in the same
folder as the php script it, it should have access to it (server is for
localhost use only). According to info of the program provided by osx,
the program can be read by Everyone, Staff, and me. I guess Apache
should have enough privileges to execute the program.
>
Maarten
>
Readable and executable are two different things.

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

  #8  
Old September 23rd, 2008, 05:35 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Jerry Stuckle wrote:
Quote:
Maarten wrote:
Quote:
Quote:
> It could also be a permission problem - is the Apache web server the
>>owner of the file, or does it have access to the file?
>>
>>
>Apache is not the owner of the file and as it is located in the same
>folder as the php script it, it should have access to it (server is
>for localhost use only). According to info of the program provided by
>osx, the program can be read by Everyone, Staff, and me. I guess
>Apache should have enough privileges to execute the program.
>>
>Maarten
>>
>
Readable and executable are two different things.
>
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.

Maarten
  #9  
Old September 23rd, 2008, 06:25 PM
Gordon Burditt
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

>Readable and executable are two different things.

And writable is another different thing.
Quote:
>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.


  #10  
Old September 23rd, 2008, 06:55 PM
Bill H
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 19, 3:35*pm, Maarten <b...@blah.comwrote:
Quote:
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
  #11  
Old September 23rd, 2008, 07:05 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Gordon Burditt wrote:
Quote:
Quote:
Quote:
>>Readable and executable are two different things.
>
And writable is another different thing.
>
Quote:
>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
  #12  
Old September 23rd, 2008, 07:25 PM
Jerry Stuckle
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
Quote:
Gordon Burditt wrote:
Quote:
Quote:
>>>Readable and executable are two different things.
>>
>And writable is another different thing.
>>
Quote:
>>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
==================

  #13  
Old September 23rd, 2008, 07:35 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Jerry Stuckle wrote:
Quote:
Maarten wrote:
Quote:
>Gordon Burditt wrote:
Quote:
>>>>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


  #14  
Old September 23rd, 2008, 07:45 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Bill H wrote:
Quote:
On Sep 19, 3:35 pm, Maarten <b...@blah.comwrote:
Quote:
>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
  #15  
Old September 23rd, 2008, 09:25 PM
Bill H
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 23, 3:36*pm, Maarten <b...@blah.comwrote:
Quote:
Bill H wrote:
Quote:
On Sep 19, 3:35 pm, Maarten <b...@blah.comwrote:
Quote:
Howdy,
>
Quote:
Quote:
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.
>
Quote:
Quote:
For extracting a bit of info from my cd's I have an executable which I
execute with exec():
>
Quote:
Quote:
* * *$discOutput = exec('./discid /dev/rdisk2');
>
Quote:
Quote:
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.
>
Quote:
Quote:
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.
>
Quote:
Quote:
Can someone tell me what I am doing wrong?
>
Quote:
Quote:
Thanks in advance, Maarten
>
Quote:
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:
>
Quote:
$discOutput = exec('cd /dev/rdisk2;[fullpathto discid]/discid');
>
Quote:
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
  #16  
Old September 23rd, 2008, 09:35 PM
Bill H
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 23, 3:36*pm, Maarten <b...@blah.comwrote:
Quote:
Bill H wrote:
Quote:
On Sep 19, 3:35 pm, Maarten <b...@blah.comwrote:
Quote:
Howdy,
>
Quote:
Quote:
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.
>
Quote:
Quote:
For extracting a bit of info from my cd's I have an executable which I
execute with exec():
>
Quote:
Quote:
* * *$discOutput = exec('./discid /dev/rdisk2');
>
Quote:
Quote:
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.
>
Quote:
Quote:
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.
>
Quote:
Quote:
Can someone tell me what I am doing wrong?
>
Quote:
Quote:
Thanks in advance, Maarten
>
Quote:
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:
>
Quote:
$discOutput = exec('cd /dev/rdisk2;[fullpathto discid]/discid');
>
Quote:
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
  #17  
Old September 24th, 2008, 11:25 AM
Jerry Stuckle
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
Quote:
Jerry Stuckle wrote:
Quote:
>Maarten wrote:
Quote:
>>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
==================

  #18  
Old September 24th, 2008, 02:25 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Jerry Stuckle wrote:
Quote:
Maarten wrote:
Quote:
>Jerry Stuckle wrote:
Quote:
>>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
  #19  
Old September 24th, 2008, 02:35 PM
Maarten
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Bill H wrote:
Quote:
On Sep 23, 3:36 pm, Maarten <b...@blah.comwrote:
Quote:
>Bill H wrote:
Quote:
>>On Sep 19, 3:35 pm, Maarten <b...@blah.comwrote:
>>>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 . .
  #20  
Old September 24th, 2008, 07:45 PM
Bill H
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 24, 10:27*am, Maarten <b...@blah.comwrote:
Quote:
Bill H wrote:
Quote:
On Sep 23, 3:36 pm, Maarten <b...@blah.comwrote:
Quote:
Bill H wrote:
>On Sep 19, 3:35 pm, Maarten <b...@blah.comwrote:
>>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:
>
Quote:
Quote:
* * *$discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
$ooutpuut);
>
Quote:
Quote:
Also have I changed the permission of discid to 555. No change, however.
The problem remains. Both returned variable/array are empty.
>
Quote:
Quote:
Maarten- Hide quoted text -
>
Quote:
Quote:
- Show quoted text -
>
Quote:
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.
>
Quote:
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
  #21  
Old September 24th, 2008, 08:05 PM
Jerry Stuckle
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

Maarten wrote:
Quote:
Jerry Stuckle wrote:
Quote:
>Maarten wrote:
Quote:
>>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
>
Then I would suspect the program itself is being executed but returning
an invalid return code to exec().

I think you need to look at what the program is doing.

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

  #22  
Old September 24th, 2008, 08:55 PM
Bill H
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 24, 10:27*am, Maarten <b...@blah.comwrote:
Quote:
Bill H wrote:
Quote:
On Sep 23, 3:36 pm, Maarten <b...@blah.comwrote:
Quote:
Bill H wrote:
>On Sep 19, 3:35 pm, Maarten <b...@blah.comwrote:
>>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:
>
Quote:
Quote:
* * *$discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
$ooutpuut);
>
Quote:
Quote:
Also have I changed the permission of discid to 555. No change, however.
The problem remains. Both returned variable/array are empty.
>
Quote:
Quote:
Maarten- Hide quoted text -
>
Quote:
Quote:
- Show quoted text -
>
Quote:
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.
>
Quote:
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 -
Google groups ate my reply from earlier it appears. Is that program
sending to STDOUT (I believe that is what exec() looks at)?

How about piping, can you do that in Mac OSX? ( ie $this=exec('discid
Quote:
here.txt'); ) Does it output to the here.txt?
Bill H
  #23  
Old September 25th, 2008, 10:35 AM
Captain Paralytic
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On 24 Sep, 21:50, Bill H <b...@ts1000.uswrote:
Quote:
On Sep 24, 10:27*am, Maarten <b...@blah.comwrote:
>
>
>
Quote:
Bill H wrote:
Quote:
On Sep 23, 3:36 pm, Maarten <b...@blah.comwrote:
>Bill H wrote:
>>On Sep 19, 3:35 pm, Maarten <b...@blah.comwrote:
>>>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 returna
>>>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:
>
Quote:
Quote:
>* * *$discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
>$ooutpuut);
>
Quote:
Quote:
>Also have I changed the permission of discid to 555. No change, however.
>The problem remains. Both returned variable/array are empty.
>
Quote:
Quote:
>Maarten- Hide quoted text -
>
Quote:
Quote:
>- Show quoted text -
>
Quote:
Quote:
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.
>
Quote:
Quote:
Bill H
>
Quote:
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.
>
Quote:
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 -
>
Quote:
- Show quoted text -
>
Google groups ate my reply from earlier it appears. Is that program
sending to STDOUT (I believe that is what exec() looks at)?
>
How about piping, can you do that in Mac OSX? ( ie $this=exec('discid
>
Quote:
here.txt'); ) Does it output to the here.txt?
>
Bill H
| is piping, is redirection.
  #24  
Old September 25th, 2008, 10:45 AM
Bill H
Guest
 
Posts: n/a
Default Re: Exec() function not doing as I want (OSX)

On Sep 25, 6:31*am, Captain Paralytic <paul_laut...@yahoo.comwrote:
Quote:
On 24 Sep, 21:50, Bill H <b...@ts1000.uswrote:
>
>
>
>
>
Quote:
On Sep 24, 10:27*am, Maarten <b...@blah.comwrote:
>
Quote:
Quote:
Bill H wrote:
On Sep 23, 3:36 pm, Maarten <b...@blah.comwrote:
Bill H wrote:
>On Sep 19, 3:35 pm, Maarten <b...@blah.comwrote:
>>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:
>
Quote:
Quote:
* * *$discOutput = exec('cd /dev/rdisk2; /Volumes/Users/maarten/discid',
$ooutpuut);
>
Quote:
Quote:
Also have I changed the permission of discid to 555. No change, however.
The problem remains. Both returned variable/array are empty.
>
Quote:
Quote:
Maarten- Hide quoted text -
>
Quote:
Quote:
- Show quoted text -
>
Quote:
Quote:
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.
>
Quote:
Quote:
Bill H
>
Quote:
Quote:
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.
>
Quote:
Quote:
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 -
>
Quote:
Quote:
- Show quoted text -
>
Quote:
Google groups ate my reply from earlier it appears. Is that program
sending to STDOUT (I believe that is what exec() looks at)?
>
Quote:
How about piping, can you do that in Mac OSX? ( ie $this=exec('discid
>
Quote:
Quote:
here.txt'); ) Does it output to the here.txt?
>
Quote:
Bill H
>
| is piping, is redirection.- Hide quoted text -
>
- Show quoted text -
You are right - I meant redirection

Bill H
 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

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 On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,662 network members.