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

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Maarten

    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
  • r0g

    #2
    Re: Exec() function not doing as I want (OSX)

    Maarten 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
    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.

    Comment

    • Jerry Stuckle

      #3
      Re: Exec() function not doing as I want (OSX)

      Maarten 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
      >
      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@attgl obal.net
      =============== ===

      Comment

      • Maarten

        #4
        Re: Exec() function not doing as I want (OSX)

        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.
        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

        Comment

        • Maarten

          #5
          Re: Exec() function not doing as I want (OSX)

          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

          Comment

          • Maarten

            #6
            Re: Exec() function not doing as I want (OSX)

            Maarten wrote:
            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

            Comment

            • Jerry Stuckle

              #7
              Re: Exec() function not doing as I want (OSX)

              Maarten wrote:
              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@attgl obal.net
              =============== ===

              Comment

              • Maarten

                #8
                Re: Exec() function not doing as I want (OSX)

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

                Comment

                • Gordon Burditt

                  #9
                  Re: Exec() function not doing as I want (OSX)

                  >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.


                  Comment

                  • Bill H

                    #10
                    Re: Exec() function not doing as I want (OSX)

                    On Sep 19, 3:35 pm, Maarten <b...@blah.comw rote:
                    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

                    Comment

                    • Maarten

                      #11
                      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

                      Comment

                      • Jerry Stuckle

                        #12
                        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@attgl obal.net
                        =============== ===

                        Comment

                        • Maarten

                          #13
                          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


                          Comment

                          • Maarten

                            #14
                            Re: Exec() function not doing as I want (OSX)

                            Bill H wrote:
                            On Sep 19, 3:35 pm, Maarten <b...@blah.comw rote:
                            >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

                            Comment

                            • Bill H

                              #15
                              Re: Exec() function not doing as I want (OSX)

                              On Sep 23, 3:36 pm, Maarten <b...@blah.comw rote:
                              Bill H wrote:
                              On Sep 19, 3:35 pm, Maarten <b...@blah.comw rote:
                              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

                              Comment

                              Working...