使用system()在PHP中运行命令时没有得到LD_LIBRARY_PATH

时间:2022-09-27 23:12:14

I am running an in build C++ compiled file using PHP's system() command But when I run this PHP code I am getting error that LD_LIBRARY_PATH value not set.

我正在使用PHP的system()命令运行一个构建C ++编译的文件但是当我运行这个PHP代码时,我收到LD_LIBRARY_PATH值未设置的错误。

But when I run the command in command prompt directly I am getting the result.

但是当我直接在命令提示符下运行命令时,我得到了结果。

Please help me to fix this issue.

请帮我解决这个问题。

1 个解决方案

#1


0  

Configure PHP or set LD_LIBRARY_PATH in run time in PHP script. Similar example in c++:

在PHP脚本中配置PHP或在运行时设置LD_LIBRARY_PATH。 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);
    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>

#1


0  

Configure PHP or set LD_LIBRARY_PATH in run time in PHP script. Similar example in c++:

在PHP脚本中配置PHP或在运行时设置LD_LIBRARY_PATH。 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);
    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>