使用system()在PHP中运行命令时未获取LD_LIBRARY_路径
我正在使用PHP的代码>系统())< /COD>命令运行一个内置C++编译文件使用system()在PHP中运行命令时未获取LD_LIBRARY_路径,php,c++,amazon-ec2,environment-variables,system,Php,C++,Amazon Ec2,Environment Variables,System,我正在使用PHP的代码>系统())< /COD>命令运行一个内置C++编译文件 <pre> #include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { char szBuffer[128]; char * psz = getenv("LD_LIBRARY_PATH"); printf("Initial LD_LIBRARY_PATH=%s\n",psz
<pre>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
char szBuffer[128];
char * psz = getenv("LD_LIBRARY_PATH");
printf("Initial LD_LIBRARY_PATH=%s\n",psz);
putenv("LD_LIBRARY_PATH=/tmp/somedir1");
psz = getenv("LD_LIBRARY_PATH");
sprintf(szBuffer, "%s:tmp/somedir2",psz);
printf("LD_LIBRARY_PATH=%s\n",psz);
setenv("LD_LIBRARY_PATH", szBuffer,1);
psz = getenv("LD_LIBRARY_PATH");
sprintf(szBuffer, "%s:tmp/somedir3",psz);
printf("LD_LIBRARY_PATH=%s\n",psz);
setenv("LD_LIBRARY_PATH", szBuffer,1);
psz = getenv("LD_LIBRARY_PATH");
printf("LD_LIBRARY_PATH=%s\n",psz);
return 0;
}
</pre>
output:
<pre>
Initial LD_LIBRARY_PATH=/tmp/dir1
LD_LIBRARY_PATH=/tmp/somedir1
LD_LIBRARY_PATH=/tmp/somedir1:tmp/somedir2
LD_LIBRARY_PATH=/tmp/somedir1:tmp/somedir2:tmp/somedir3
</pre>
但是当我运行这个PHP代码时,我得到了一个错误,LD\u LIBRARY\u PATH
值没有设置
但是当我直接在命令提示符下运行命令时,我得到了结果
请帮助我解决此问题。在PHP脚本中配置PHP或在运行时设置LD_LIBRARY_路径。c++中的类似示例:
#包括
#包括
int main(int argc,字符**argv){
char-szBuffer[128];
char*psz=getenv(“LD_LIBRARY_PATH”);
printf(“初始LD_库路径=%s\n”,psz);
putenv(“LD_LIBRARY_PATH=/tmp/somedir1”);
psz=getenv(“LD_LIBRARY_PATH”);
sprintf(szBuffer,“%s:tmp/somedir2”,psz);
printf(“LD_库路径=%s\n”,psz);
setenv(“LD_LIBRARY_PATH”,szBuffer,1);
psz=getenv(“LD_LIBRARY_PATH”);
sprintf(szBuffer,“%s:tmp/somedir3”,psz);
printf(“LD_库路径=%s\n”,psz);
setenv(“LD_LIBRARY_PATH”,szBuffer,1);
psz=getenv(“LD_LIBRARY_PATH”);
printf(“LD_库路径=%s\n”,psz);
返回0;
}
输出:
初始LD_库_路径=/tmp/dir1
LD_LIBRARY_PATH=/tmp/somedir1
LD_LIBRARY_PATH=/tmp/somedir1:tmp/somedir2
LD_LIBRARY_PATH=/tmp/somedir1:tmp/somedir2:tmp/somedir3