exec("something")
이 작동을 멈춘 후 최근에 PHP 5.2.17로 업데이트 된 FreeBSD 서버에서 일부 PHP 웹 사이트를 실행하고 exec("/full/path/something")
을 작성해야했습니다.php exec() 검색 경로에 대한 시스템 전체 설정
실행 파일이 전체 경로를 쓰는 다른 위치에있는 다른 컴퓨터에서 스크립트가 실행되므로 허용되지 않습니다. PHP에서 passthru("set")
실행
는 수 (사용자 'www'를위한) PATH 변수를 보여준다 :
나는 PHP의은 safe_mode_exec_dir 디렉토리를 가리 키도록 PATH 필요PATH=/sbin:/bin:/usr/sbin:/usr/bin
:
PATH=/usr/phpsafe_bin
가에 putenv("PATH=/usr/phpsafe_bin")
실행 PHP는 문제를 해결하지만이 컴퓨터에서 실행되는 모든 PHP 스크립트, 즉 php.ini, Apache 설정 또는 다른 시스템 설정을 변경하여 전역 수준에서 문제를 해결하는 솔루션이 필요합니다.
누군가가이 좋은 해결책을 제공 할 수 있기를 바랍니다. 어쩌면이 설명이 PHP 업데이트에서 변경된 이유 일 수도 있습니다. exec()
과 친구들의 검색 경로가 결정되는 방법에 대한 PHP 문서가없는 것 같습니다.
당신은 단순히 아파치를 시작하기 전에'은/etc/rc'의'PATH' 환경 변수를 해결할 수 있습니까? _fixed_ 디렉토리'/ usr/local/php_bin /'에 서버 전체에 흩어져있는 프로그램에 대한 심볼릭 링크를 채울 수 있습니까? – sarnold
[safe_mode는 더 이상 사용되지 않습니다.] (http://us2.php.net/manual/en/features.safe-mode.php)주의하십시오.이 기능을 사용 중지하면 서비스가 원활해질 수 있습니다. 'exec'에 대한 모든 호출을 검사합니다 ... 하드 코딩 경로 이름은 결국 나쁜 생각이 아닐 수도 있습니다!) – Charles