一些PHP代码运行良好。但是,当我将代码移植到Drupal模块时,$fp = fopen( 'language/unicode-big5.tab', 'r' );
无法正常工作,发出警告:
warning: fopen(language/unicode-big5.tab) [function.fopen]: failed to open stream: No such file or directory in /Users/me/Documents/Html/drupal/sites/all/modules/test_module/language.inc.php on line 197.
我尝试将所需的文件和文件夹放在sites/default/files
:
$fp = fopen( file_directory_path().'/language/unicode-big5.tab', 'r' );
返回相同的警告。
我该如何解决?
答案 0 :(得分:2)
这将完美无缺。
然而,该消息只是说明你的路径是错误的,你试过一个简单地看看它试图打开的路径吗?
只需执行以下操作,并相应地更正路径。
echo realpath(file_directory_path() . '/language/unicode-big5.tab');
如果路径 正确,那么您需要检查权限,该用户是否可以访问该文件?尝试使用chmod 777并查看是否有助于解决问题,如果有,请删除chmod 777并相应地修复它(用户/组权限)。
答案 1 :(得分:2)
最好在drupal标准之后使用模块路径并将其添加到文件的路径:
drupal_get_path('module', $module_name);
答案 2 :(得分:0)
您的Drupal是否在与您所指的文件不同的所有者下运行?文件是否可读? (chmod + r文件)
答案 3 :(得分:0)
在Drupal 7和8中,有drupal_realpath()
。
文档中不鼓励使用此功能。
https://api.drupal.org/api/drupal/includes!file.inc/function/drupal_realpath/7.x