关于php执行liux命令出现的问题,记载

      前段时间,做一个php调用shell脚本的功能,发现exec函数在其中一台服务器A上怎么也执行不了,按照网上搜到的一些答案,修改了visodu和php.ini(放开禁用函数)里配置等也不行。

      最后没办法自己在本地重新搭建了下A服务器php环境。A服务器环境用的是lnmp0.6,在本地搭建完,也执行不了exec函数,因此可以肯定是A服务器环境的问题。lnmp0.6安装完,发现其锁定了web目录为/home/default/web,遂尝试修改了下web目录的位置,修改完运行,终于可以执行exec函数了。卖糕的,原来就是因为锁定web目录的问题导致的exec执行不了,具体为什么没想的太明白。不过总算把问题解决了。

      lnmp0.6是通过php-fpm.conf和fcgi.conf来指定web目录,而不是简单使用nginx中的root来指定web目录。php-fpm修改的地方如下:

chroot = /home/default/ #注释掉此行
fcgi.conf(修改nginx.conf指定的fcgi)修改的地方如下:

fastcgi_param  SCRIPT_FILENAME    web/$fastcgi_script_name;
修改为:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
这样修改完就可以了。至于网上搜到的答案要修改visudo中的配置,我尝试了下,无需修改也可。但是php.ini里的disable_functions限制一定放开。

 到此问题就解决了。

你可能感兴趣的:(PHP,nginx,linux)