2014-08-30 77 views
0

如何在linux/Mac系统上成功运行PHP的命令行应用程序。使用PHP运行命令行应用程序

我正在使用mac并试图运行optipng。我从这里

http://sourceforge.net/projects/optipng/files/OptiPNG/optipng-0.7.5/optipng-0.7.5.tar.gz/download?use_mirror=softlayer-sng&download= 

下载使用OptiPNG下载之后,我通过命令行安装了由CD'ing的下载文件夹,并相应地安装它:

cd path/to/optipng 
sudo ./configure 
sudo make install 

我现在可以运行它并压缩像这样的图像:

optipng path/to/example/file.png 

一切工作正常,所以它已安装并在我的系统上工作。

我想通过一个PHP页面来运行它,所以我试试这个:

<?php 
echo "origional size =". filesize(path/to/example/file.png)."\n"; 

$compress = shell_exec('optipng path/to/example/file.png'); 

echo "<pre>$compress</pre>"; 

echo "new size =". filesize(path/to/example/file.png)."\n"; 

?> 

但不起任何作用。我在这里错过了什么?如何成功使用shell_exec()或exec()?

+0

'var_dump($ compress);'在shell_exec之后。里边啥啊 ? – Jigar 2014-08-30 10:20:29

+0

做optipng需要任何环境变量? – Jigar 2014-08-30 10:21:16

+0

所需的全部是文件的路径。 – user3143218 2014-08-30 10:21:49

回答

1
<?php 
exec('/dev/null > /tmp/optipng.log'); 
echo "origional size =". filesize('/tmp/steve-jobs.png')."\n"; 

shell_exec('/usr/local/bin/optipng -log /tmp/optipng.log /tmp/steve-jobs.png'); 
$compress = file_get_contents('/tmp/optipng.log'); 

echo "<pre>$compress</pre>"; 

echo "new size =". filesize('/tmp/steve-jobs.png')."\n"; 

?>