Php 如何让MySQLdb与www用户一起在OSX上工作?

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

我刚刚设法在OSX上安装了mySQLdb for Python,并且从命令行可以正常工作。我可以查询数据库没有问题

我现在要做的是使用系统函数从PHP调用python脚本

这个片段:

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中,解决了这个问题。希望这对其他人有用