ciocan 0 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 Share this post Link to post Share on other sites
effigy 0 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]? Share this post Link to post Share on other sites
ciocan 0 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 Share this post Link to post Share on other sites
effigy 0 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? Share this post Link to post Share on other sites
ciocan 0 Posted July 27, 2006 i tested with exec and system with php path and same problem. Share this post Link to post Share on other sites
effigy 0 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] Share this post Link to post Share on other sites
ciocan 0 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 Share this post Link to post Share on other sites
effigy 0 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. Share this post Link to post Share on other sites