我在php脚本中使用exec函数,如果我在命令行中运行脚本,例如“php xx.php”,exec函数将被执行,但如果我从浏览器访问php页面,那么exec函数不会运行。有谁知道如何解决这个问题?
感谢。
答案 0 :(得分:4)
脚本是否尝试创建/编辑/删除文件?尝试使Web服务器可以写入文件和包含目录。如果您要添加文件,请导航至要添加的文件夹并运行以下内容:chmod go+w .
。如果您尝试删除/编辑文件,请尝试以下操作:chmod go+w myfile.txt
。
从命令行运行脚本时,它以登录用户身份运行,而在通过浏览器运行时,它作为Web服务器用户(通常是名为www的用户)运行。此用户通常没有< em> write 访问正在提供的文件和目录。
答案 1 :(得分:3)
您可以使用“ 2&gt;&amp; 1 ”作为您尝试使用exec()执行的命令的成功。
例如: - exec(php xx.php 2&gt;&amp; 1“,$ output);
然后您可以通过打印输出跟踪问题。
答案 2 :(得分:2)
检查phpinfo()
输出以查看是否启用了安全模式。还要检查是否启用了suhosin或mod_security。所有这些都会限制您使用exec()
...
答案 3 :(得分:0)
如果您正在使用MAMP(对于WAMP和LAMP,我认为它应该有点类似)尝试打开文件MAMP / Library / bin / envvar以及if和else的四行应该看起来像这样:
#if test "x$DYLD_LIBRARY_PATH" != "x" ; then
# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
#else
# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib"
对我有用!祝你好运!