Php 如何让MySQLdb与www用户一起在OSX上工作?
我刚刚设法在OSX上安装了mySQLdb for Python,并且从命令行可以正常工作。我可以查询数据库没有问题 我现在要做的是使用系统函数从PHP调用python脚本 这个片段:Php 如何让MySQLdb与www用户一起在OSX上工作?,php,python,Php,Python,我刚刚设法在OSX上安装了mySQLdb for Python,并且从命令行可以正常工作。我可以查询数据库没有问题 我现在要做的是使用系统函数从PHP调用python脚本 这个片段: import MySQLdb print "hello from py" 当从PHP运行时,系统返回1到PHP,但如果我从命令行运行它,它将从py打印hello。如果我注释掉import语句,并使用system再次通过PHP运行脚本,它将从py返回hello 因此,我确信这一定与MySQLdb有关。我对UNIX
import MySQLdb
print "hello from py"
当从PHP运行时,系统返回1到PHP,但如果我从命令行运行它,它将从py打印hello。如果我注释掉import语句,并使用system再次通过PHP运行脚本,它将从py返回hello
因此,我确信这一定与MySQLdb有关。我对UNIX不是非常熟练,尽管我猜这可能与www用户通过PHP访问mySQLdb模块不正确有关
我无法让它将任何错误返回到PHP,因此很难进行故障排除
如果有人能帮我指出正确的方向,或者:将Python的错误消息发送给PHP,并自行解决问题,我将不胜感激
编辑:
一些更好的信息:
我将代码段更改为:
print "before"
try:
import MySQLdb
except Exception,e:
print e
print "hello from py"
并使用PHP exec而不是system执行:
exec('python /Users/Tapefreak/sites/a/testpy.py');
这就是PHP的特点:
无法将文件提取到鸡蛋缓存
尝试将文件解压缩到数据库时发生以下错误
Python蛋缓存:
[Errno 13]权限被拒绝:'/Library/WebServer/.python'
Python egg缓存目录当前设置为:
/Library/WebServer/.python
您的帐户可能没有对此目录的写入权限?
您可以通过设置PYTHON_EGG_缓存来更改缓存目录
环境变量指向可访问的目录
因此,我创建了目录并对其进行了浏览
然后,脚本的输出更改为:
dlopen/Library/WebServer/.python-eggs/MySQL\u python-1.2.3b2-py2.6-macosx-10.6-universal.egg-tmp//u MySQL.so,
2:未加载库:libmysqlclient.18.dylib引用自:
/Library/WebServer/.python-eggs/MySQL\u python-1.2.3b2-py2.6-macosx-10.6-universal.egg-tmp//u MySQL.so
原因:找不到图像
这是我早些时候收到的一条消息,但我原以为它是固定的——结果它只针对我的本地用户,而不针对www和root用户。容忍我,我正在学习
再深入一点,我发现这个解决方案添加了一个符号链接:
我在/usr/lib中添加了:
ln-s/usr/local/mysql-5.5.16-osx10.6-x86_64/lib/libmysqlclient.18.dylib libmysqlclient.18.dylib
现在它似乎正在工作:PHP可以执行利用MySQLdb的Python。检查apache错误日志中的错误。
另外,尝试使用su'ing访问www并手动执行脚本。如上所述,将/usr/lib中的符号链接添加到/usr/local/mysql-5.5.16-osx10.6-x86_64/lib/libmysqlclient.18.dylib中,解决了这个问题。希望这对其他人有用