首页  >  文章  >  数据库  >  为什么我在 El Capitan 上使用 MySQLdb 时会收到“不安全使用相对路径”错误?

为什么我在 El Capitan 上使用 MySQLdb 时会收到“不安全使用相对路径”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-24 18:56:30395浏览

Why am I getting an

El Capitan 用户在 MySQLdb 中遇到“不安全使用相对路径”错误

Django 用户在尝试运行 python manage.py runserver 时遇到了神秘错误命令,收到以下消息:

ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Python/2.7/site-packages/_mysql.so
  Reason: unsafe use of relative rpath libmysqlclient.18.dylib in /Library/Python/2.7/site-packages/_mysql.so with restricted binary

用户已通过 Pip 安装 MySQL-python 并按照建议的步骤操作,但问题仍然存在。而且,他们使用的是 El Capitan Beta 3 操作系统。

罪魁祸首:系统完整性保护

在 OS X El Capitan (10.11) 中,Apple 引入了系统完整性保护 (SIP),它可以保护系统完整性。限制 /usr 等受保护位置中的程序使用相对引用访问共享库。在这种情况下,_mysql.so 共享库包含对共享库 libmysqlclient.18.dylib 的相对引用。

解决方案:强制绝对引用

未来更新 _mysql.so可以解决此问题,临时解决方案包括使用 install_name_tool 实用程序强制库使用绝对引用。

假设 libmysqlclient.18.dylib 位于 /usr/local/mysql/lib/,请执行以下命令命令:

sudo install_name_tool -change libmysqlclient.18.dylib \
  /usr/local/mysql/lib/libmysqlclient.18.dylib \
  /Library/Python/2.7/site-packages/_mysql.so

此命令将修改 _mysql.so 以使用 libmysqlclient.18.dylib 共享库的绝对路径,解决“不安全使用相对路径”错误。

以上是为什么我在 El Capitan 上使用 MySQLdb 时会收到“不安全使用相对路径”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn