【问题标题】:How to get MySQLdb to work on OSX with _www user?如何让 MySQLdb 使用 _www 用户在 OSX 上工作?
【发布时间】:2011-10-20 17:09:20
【问题描述】:

我刚刚设法在 OSX 上安装了适用于 Python 的 mySQLdb - 从命令行可以正常工作。我可以查询数据库没有问题。

我现在要做的是使用 system() 函数从 PHP 调用 python 脚本。

这个sn-p:

import MySQLdb

print "hello from py"

当从 PHP system() 运行时,向 PHP 返回“1”,但如果我从命令行运行它,它会打印出“hello from py”。如果我注释掉 import 语句,并使用 system() 再次通过 PHP 运行脚本,它会返回“hello from py”

因此,我确定它一定与 MySQLdb 有关。我对 UNIX 不是很熟练,虽然我猜这可能与 _www 用户通过 PHP 访问 mySQLdb 模块不正确有关??

我无法让它向 PHP 返回任何错误,因此很难排除故障。

一些帮助指出我正确的方向,或者:将 Python 的错误消息发送到 PHP,并自行解决问题,将不胜感激。

编辑:

一些更好的信息:

我把 sn-p 改成这样:

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 的结果:

无法将文件提取到 egg 缓存

尝试将文件提取到 Python 鸡蛋缓存:

[Errno 13] 权限被拒绝:'/Library/WebServer/.python-eggs'

Python egg 缓存目录当前设置为:

/Library/WebServer/.python-eggs

也许您的帐户没有对该目录的写入权限? 您可以通过设置 PYTHON_EGG_CACHE 来更改缓存目录 环境变量指向一个可访问的目录。

所以,我创建了目录并对其进行了更改。

然后,脚本的输出变为:

dlopen(/Library/WebServer/.python-eggs/MySQL_python-1.2.3b2-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so, 2):库未加载:libmysqlclient.18.dylib 引用自: /Library/WebServer/.python-eggs/MySQL_python-1.2.3b2-py2.6-macosx-10.6-universal.egg-tmp/_mysql.so 原因:找不到图片

这是我之前收到的一条消息,但原以为已修复——结果发现它仅针对我的本地用户修复,而不针对 www 和 root 用户。 (请耐心等待,我正在学习......)

对 SO 进行更多挖掘,我找到了添加符号链接的解决方案:Python mysqldb: Library not loaded: libmysqlclient.18.dylib

我在 /usr/lib 中添加的:

ln -s /usr/local/mysql-5.5.16-osx10.6-x86_64/lib/libmysqlclient.18.dylib libmysqlclient.18.dylib

它现在似乎可以工作了:PHP 可以执行使用 MySQLdb 的 Python。

【问题讨论】:

    标签: php python


    【解决方案1】:

    检查您的 apache 错误日志是否有错误。 另外,尝试 su'ing 到 _www 并手动执行脚本。

    【讨论】:

      【解决方案2】:

      如上所述将/usr/lib 中的符号链接添加到/usr/local/mysql-5.5.16-osx10.6-x86_64/lib/libmysqlclient.18.dylib 为我解决了这个问题。希望这对其他人有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        • 2018-02-07
        • 2011-07-01
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        相关资源
        最近更新 更多