ciocan Posted July 27, 2006 Share Posted July 27, 2006 Hi, I have a exec/system problem.I want to execute a php script in background.I tested with exec("php script.php > /dev/null 2>&1 &")On my server works fine (i use cPanel) but on other server that have directadmin this not works.When i try echo exec("php -v") i get only a 127 return and no php version text.I compared the results from phpinfo() and I did not findsomething to change to make it works.When i try: system("whereis php",$out);echo $out;on the good server i get:php: /usr/bin/php /etc/php.d /etc/php.ini /usr/lib/php /usr/lib/php.ini /usr/local/bin/php /usr/local/lib/php /usr/local/lib/php.ini /usr/include/php /usr/man/man1/php.1 0and the server where is not working:php: /usr/local/man/man1/php.1 0In my phpinfo() on the server that works I don't see CLI extension enabled. (if this is the problem)Which settings do I have to change to make this works ?ThanksRaduPS: safe_mode is off on both servers Quote Link to comment Share on other sites More sharing options...
effigy Posted July 27, 2006 Share Posted July 27, 2006 Are the OSes the same?What does [tt]exec('php -v; echo $?');[/tt] give you? How about something as simple as [tt]exec('ls');[/tt]? Quote Link to comment Share on other sites More sharing options...
ciocan Posted July 27, 2006 Author Share Posted July 27, 2006 The first server which works is Linux 2.6.9-022stab078.9-enterprise #1 SMP Thu Jun 8 12:38:51 MSD 2006 i686and the second one which i have issues isFreeBSD 4.10-RELEASE-p3 FreeBSD 4.10-RELEASE-p3 #0: Wed i386I executed exec('php -v; echo $?'); and i get 127 0 as response;exec('ls'); works fine, it returns the files there.Radu Quote Link to comment Share on other sites More sharing options...
effigy Posted July 27, 2006 Share Posted July 27, 2006 You might want to check your settings again. The following code gives me "1":[code]<?php exec('php -v', $output, $return_val); echo $return_val;?>[/code]Also, do you know the full path to the php executable? Quote Link to comment Share on other sites More sharing options...
ciocan Posted July 27, 2006 Author Share Posted July 27, 2006 i tested with exec and system with php path and same problem. Quote Link to comment Share on other sites More sharing options...
effigy Posted July 27, 2006 Share Posted July 27, 2006 This could be a permission issue. See what this gives you:[code]<?php $path = '/full/path/to/php/executable'; echo '<pre>'; echo 'Group: ', print_r(posix_getgrgid(filegroup($path)), true); echo '<br />'; echo 'Owner: ', print_r(posix_getpwuid(fileowner($path)), true); echo '<br />'; echo 'Permissions: ', substr(sprintf('%o', fileperms($path)), -4); echo '</pre>';?>[/code] Quote Link to comment Share on other sites More sharing options...
ciocan Posted July 27, 2006 Author Share Posted July 27, 2006 i found it :) ... in the second server the php path is /usr/local/bin/php and in the first is /usr/bin/php (I checked only with that path).in the second server (bsd one) i can't run it with simply php (without path) like in the other server.Is there a way (shell command or php settings from php.ini) to run php without path?(like exec('php script.php');)RaduPS: thanks effigy for your help Quote Link to comment Share on other sites More sharing options...
effigy Posted July 27, 2006 Share Posted July 27, 2006 The bin directory would need to be in the path, which I believe Apache inherits from the shell it is started in. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.