Drupal 7, Fedora - dd()가 웹에서 작동하지 않습니다.

Drupal 7, Fedora - dd()가 웹에서 작동하지 않습니다.

나는 tmp 디렉토리를 /tmpDrupal 관리 경로에 지정했습니다 admin/config/media/file-system. 이 설정은 dpm(file_directory_temp());에서 실행하여 확인됩니다 devel/php.

/tmp/drupal_debug.txt(내가 배운 SELinux 설정 포함) 의 권한여기)는 다음과 같습니다:

$ ls -ltZ /tmp/
-rwxrwxrwx. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 drupal_debug.txt

dd("Foo")또한 PHP CLI 도구 내에서 실행하면phpsh사용하여드러시 통합dd() 부트스트랩된 Drupal 환경을 얻으려면 문제 없이 이 파일을 인쇄하는 데 사용할 수 있습니다 . Apache가 이 파일에 쓸 수 있도록 하려면 추가로 수행해야 할 작업이 있습니까?

Apache 로그에는 오류가 없으며 특히 sudo setenforce 0.

또 다른 흥미로운 점은 다음의 PHP 테스트 조각입니다.이 StackOverflow 질문에서 실행할 때 "성공"을 반환합니다 devel/php. 즉, Drupal은 /tmp. 그러나 코드를 다음 형식으로 수정하면:

 $handle = fopen("/tmp/drupal_debug.txt", "x");
 if ($handle) echo "Success!";
 else print_r(error_get_last());

그 다음에다음 경고가 표시되고 성공 메시지는 표시되지 않습니다.

경고: fopen(/tmp/drupal_debug.txt): 스트림을 열지 못했습니다. 파일이 eval()에 있습니다(/srv/www/decipher-storyscope/public_html/decipher/7f/profiles/storyscope/modules/contrib/의 1번째 줄). devel/devel.module(1285) : eval()'d 코드).

내가 봐도 이건 사실이야삭제파일 /tmp/drupal_debug.txt.

그러나 주석에서 설명한 것처럼 웹에서 이 코드 조각을 실행할 때 파일이 생성되지 않는 반면, 빈 파일은~이다PHP 명령줄에서 동일한 코드 조각을 실행하면 생성됩니다.

주의.dd()Ubuntu에서 코드를 설치하고 호출하면 함수가 제대로 작동합니다 .

답변1

시스템 관리자로부터 조언을 받았습니다. tmp디렉토리를 /srv/www.

shell> sudo mkdir /srv/www/my-project/tmp
shell> sudo chmod a+w /srv/www/my-project/tmp

그리고 Drupal에서는 settings.php:

$conf['file_temporary_path'] = '/srv/www/my-project/tmp';

그런 다음 tail -f /srv/www/my-project/tmp/drupal_debug.txt작동합니다.

관련 정보