fopen在普通的PHP中工作但不在Drupal中

时间:2011-07-21 07:22:58

标签: php drupal drupal-modules

一些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' );

返回相同的警告。

我该如何解决?

4 个答案:

答案 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